高级搜索模型 - AddIQueryItemAdvSearch8Info +

2017-04-14 17:06:40  访问(2012) 赞(0) 踩(0)


        /// <summary>
        /// 高级搜索模型 - AddIQueryItemAdvSearch8Info + 
        /// </summary>
        /// <param name="infoList">字段|字段|字段</param>
        /// <param name="_theValue">关键词 关键词</param>
        public void AddIQueryItemAdvSearch8Info
            (
                List<EntityFieldInfo> infoList,
                string _theValue
            )
        {
            if (infoList == null) 
                return;

            int nameLen = infoList.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;

            EntityFieldInfo info = null;

            if (nameLen == 1)
            {
                // 一个字段的情况 //
                info = infoList[0];

                if (valueLen == 1)
                {
                    // 一个值的情况 //
                    // 模糊查找 //
                    m_ListIQueryItem.Add
                       (
                           new DataColumnQueryItem
                               (
                                   info,
                                   SlowX.Core.CoreClasses.DataColumnQueryAssist.dataColumnQueryAssistEmStringCaseLower,
                                   SlowX.Core.Enums.SqlLink.EmSqlLink._Like_,
                                   valueArray[0].Trim().ToLower()
                               )
                       );
                }
                else
                {
                    // 多个条件值的情况 //
                    // 类似:(name like '%slowx%' and name like '%编程%')
                    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.AddIQueryItemWithEntityFieldInfo
                            (
                                Enums.SqlConditionLink.EmSqlConditionLink.and,
                                info,
                                DataColumnQueryAssist.dataColumnQueryAssistEmStringCaseLower,
                                Enums.SqlLink.EmSqlLink._Like_,
                                sValue.Trim().ToLower()
                            );
                    }

                }
            }
            else
            {
                // 多个字段的情况 //
                string tmpValue = "";

                if (valueLen == 1)
                {
                    // 一个条件值 //
                    // 类似:(name like '%slowx%' or keyword like '%slowx%')
                    tmpValue = valueArray[0].Trim().ToLower();

                    GroupQueryItem gi
                        =
                        new GroupQueryItem
                            (
                                Enums.SqlConditionLink.EmSqlConditionLink.and
                            );

                    m_ListIQueryItem.Add
                        (
                            gi
                        );

                    for(int i = 0;i<nameLen;++i)
                    {
                        info = infoList[i];

                        if (info == null)
                            continue;

                        gi.AddIQueryItemWithEntityFieldInfo
                            (
                                Enums.SqlConditionLink.EmSqlConditionLink.or,
                                info,
                                DataColumnQueryAssist.dataColumnQueryAssistEmStringCaseLower,
                                Enums.SqlLink.EmSqlLink._Like_,
                                tmpValue
                            );
                    }
                }
                else
                {
                    // 多个字段多个值 //

                    GroupQueryItem gTotal
                        =
                        new GroupQueryItem(Enums.SqlConditionLink.EmSqlConditionLink.and);

                    GroupQueryItem gi = null;

                    m_ListIQueryItem.Add
                        (
                            gTotal
                        );

                    // 从值的纬度做查询 //
                    // 如:((name like '%slowx%' or keyword like '%slowx%') and (name like '%编程%' or keyword like '%编程%'))
                    foreach (string sValue in valueArray)
                    {
                        if (sValue == null)
                            continue;

                        tmpValue = sValue.Trim();

                        if (tmpValue.Length == 0)
                            continue;

                        tmpValue = tmpValue.ToLower();

                        gi = new GroupQueryItem
                            (
                                Enums.SqlConditionLink.EmSqlConditionLink.and
                            );

                        gTotal.AddGroupQueryItem
                          (
                              gi
                          );


                        for (int i = 0; i < nameLen; ++i)
                        {
                            info = infoList[i];

                            if (info == null)
                                continue;

                            gi.AddIQueryItemWithEntityFieldInfo
                                (
                                    Enums.SqlConditionLink.EmSqlConditionLink.or,
                                    info,
                                    DataColumnQueryAssist.dataColumnQueryAssistEmStringCaseLower,
                                    Enums.SqlLink.EmSqlLink._Like_,
                                    tmpValue
                                );
                        }
                    }

                }
            }
        }


标签:高级搜索模型 - AddIQueryItemAdvSearch8Info + 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

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