高级搜索模型 - 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 + 


上一条:
下一条:
相关评论
发表评论