高级搜索模型 - AddIQueryItemByAdvSearchAssist

2017-02-19 10:20:13  访问(1559) 赞(0) 踩(0)

  • 
            /// <summary>
            /// 高级搜索模型 - AddIQueryItemByAdvSearchAssist
            /// </summary>
            /// <param name="_listAdvSearchAssist"></param>
            /// <param name="_theValue"></param>
            public void AddIQueryItemByAdvSearchAssist
                (
                    List<AdvSearchAssist> _listAdvSearchAssist,
                    string _theValue
                )
            {
                if (_listAdvSearchAssist == null)
                    return;
    
                int nameLen = _listAdvSearchAssist.Count;
    
                if (nameLen == 0)
                    return;
    
    
                if (_theValue == null || _theValue.Length == 0)
                    return;
    
                _theValue = _theValue.Trim();
    
                if (_theValue.Length == 0)
                    return;
    
    
                string[] valueArray = _theValue.Split(new char[] { ' ' });
    
                int valueLen = valueArray.Length;
    
                if (valueLen == 0)
                    return;
    
                AdvSearchAssist advSearchAssistValue = null;
    
                if (nameLen == 1)
                {
                    if (valueLen == 1)
                    {
                        advSearchAssistValue = _listAdvSearchAssist[0];
    
                        if (advSearchAssistValue.isLike)
                        {
                            if (advSearchAssistValue.isLower)
                            {
                                m_ListIQueryItem.Add
                                   (
                                       new DataColumnQueryItem
                                           (
                                               advSearchAssistValue.info,
                                               SlowX.Core.CoreClasses.DataColumnQueryAssist.dataColumnQueryAssistEmStringCaseLower,
                                               SlowX.Core.Enums.SqlLink.EmSqlLink._Like_,
                                               valueArray[0].Trim().ToLower()
                                           )
                                   );
                            }
                            else
                            {
                                m_ListIQueryItem.Add
                                  (
                                      new DataColumnQueryItem
                                          (
                                              advSearchAssistValue.info,
                                              SlowX.Core.Enums.SqlLink.EmSqlLink._Like_,
                                              valueArray[0].Trim()
                                          )
                                  );
                            }
                        }
                        else
                        {
                            if (advSearchAssistValue.isLower)
                            {
                                m_ListIQueryItem.Add
                                   (
                                       new DataColumnQueryItem
                                           (
                                               advSearchAssistValue.info,
                                               SlowX.Core.CoreClasses.DataColumnQueryAssist.dataColumnQueryAssistEmStringCaseLower,
                                               SlowX.Core.Enums.SqlLink.EmSqlLink.Like,
                                               valueArray[0].Trim().ToLower()
                                           )
                                   );
                            }
                            else
                            {
                                m_ListIQueryItem.Add
                                  (
                                      new DataColumnQueryItem
                                          (
                                              advSearchAssistValue.info,
                                              SlowX.Core.Enums.SqlLink.EmSqlLink.Like,
                                              valueArray[0].Trim()
                                          )
                                  );
                            }
    
                        }
                    }
                    else
                    {
                        GroupQueryItem gi = new GroupQueryItem(Enums.SqlConditionLink.EmSqlConditionLink.and);
    
                        m_ListIQueryItem.Add
                            (
                                gi
                            );
    
                        foreach (string sValue in valueArray)
                        {
                            if (sValue == null || sValue.Trim().Length == 0)
                                continue;
    
                            gi.AddIQueryItemWithEntityFieldInfoParams
                                (
                                    Enums.SqlConditionLink.EmSqlConditionLink.and,
                                    advSearchAssistValue.info,
                                    advSearchAssistValue.isLower,
                                    advSearchAssistValue.isLike,
                                    sValue.Trim()
                                );
                        }
    
                    }
                }
                else
                {
                    string tmpValue = "";
    
                    if (valueLen == 1)
                    {
                        tmpValue = valueArray[0].Trim();
    
                        GroupQueryItem gi = new GroupQueryItem(Enums.SqlConditionLink.EmSqlConditionLink.and);
    
                        m_ListIQueryItem.Add
                            (
                                gi
                            );
    
                        for (int i = 0; i < nameLen; ++i)
                        {
                            advSearchAssistValue = _listAdvSearchAssist[i];
    
                            gi.AddIQueryItemWithEntityFieldInfoParams
                                (
                                    Enums.SqlConditionLink.EmSqlConditionLink.or,
                                    advSearchAssistValue.info,
                                    advSearchAssistValue.isLower,
                                    advSearchAssistValue.isLike,
                                    tmpValue
                                );
                        }
                    }
                    else
                    {
                        GroupQueryItem gTotal = new GroupQueryItem(Enums.SqlConditionLink.EmSqlConditionLink.and);
                        GroupQueryItem gi = null;
    
                        m_ListIQueryItem.Add
                            (
                                gTotal
                            );
    
                        foreach (string sValue in valueArray)
                        {
                            if (sValue == null)
                                continue;
    
                            tmpValue = sValue.Trim();
    
                            if (tmpValue.Length == 0)
                                continue;
    
                            gi = new GroupQueryItem(Enums.SqlConditionLink.EmSqlConditionLink.and);
    
                            gTotal.AddGroupQueryItem
                              (
                                  gi
                              );
    
                            for (int i = 0; i < nameLen; ++i)
                            {
                                advSearchAssistValue = _listAdvSearchAssist[i];
    
                                gi.AddIQueryItemWithEntityFieldInfoParams
                                    (
                                        Enums.SqlConditionLink.EmSqlConditionLink.or,
                                        advSearchAssistValue.info,
                                        advSearchAssistValue.isLower,
                                        advSearchAssistValue.isLike,
                                        tmpValue
                                    );
                            }
                        }
    
                    }
                }
            }
    

  • using System;
    using System.Collections.Generic;
    using System.Text;
    using SlowX.Core.ICoreClasses;
    using SlowX.Core.Classes;
    
    using System.Reflection;
    
    namespace SlowX.Core.CoreClasses
    {
        /// <summary>
        /// 高级搜索的辅助配置
        /// </summary>
        [Serializable]
        public class AdvSearchAssist
        {
            /// <summary>
            /// 字段查询的辅助配置
            /// </summary>
            /// <param name="_info"></param>
            /// <param name="_isLower"></param>
            /// <param name="_isLike"></param>
            public AdvSearchAssist
                (
                    EntityFieldInfo _info,
                    bool _isLower,
                    bool _isLike
                ) 
            {
                m_info = _info;
                m_isLike = _isLike;
                m_isLower = _isLower;
    
            }
    
            /// <summary>
            /// 
            /// </summary>
            protected EntityFieldInfo m_info = null;
    
            /// <summary>
            /// 获得
            /// </summary>
            public EntityFieldInfo info
            {
                get
                {
                    return m_info;
                }
            }
    
    
            /// <summary>
            /// 是否小写查询
            /// </summary>
            protected bool m_isLower = true;
    
            /// <summary>
            /// 是否小写查询
            /// </summary>
            public bool isLower
            {
                get
                {
                    return m_isLower;
                }
            }
    
    
            /// <summary>
            /// 是否Like查询
            /// </summary>
            protected bool m_isLike = true;
    
            /// <summary>
            /// 是否Like查询
            /// </summary>
            public bool isLike
            {
                get
                {
                    return m_isLike;
                }
            }
        }
    }
    
    

标签:高级搜索模型 - AddIQueryItemByAdvSearchAssist 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)