我正在尝试创建一个搜索结果集中每个字段内容的常规搜索功能。
例如,如果我在TSQL中编写一个函数,它返回一个包含100行的结果集,并且字段为TicketID
,FirstName
,LastName
和{{1}我想为每个字段搜索字符串'Mike'的每个字段。
因此,如果“Mike”这个词在任何一个字段中,那么该记录将包含在我的搜索中。
我该怎么做?
答案 0 :(得分:2)
您可以创建完整的全文索引。您可以通过视图为表中的整个表或选定列创建此索引。 http://msdn.microsoft.com/en-us/library/ms142575.aspx#examples它有自己的语法,但它是TSQL查询的一部分,可以与常规列搜索结合使用。
答案 1 :(得分:1)
from x in someTableOrQuery
where x.FirstName.Contains(str) || x.LastName.Contains(str) || ...
select x
这只是普通的C#。不需要技巧。
请注意,这将转换为SQL中的LIKE表达式。但是你不需要进行容易出错的手动字符串连接(在这种情况下不是SQL注入)。
答案 2 :(得分:1)
或者您可以使用SqlMethods.Like方法,因此您可以在表达式中搜索特定模式。
这样的事情:
where SqlMethods.Like(str,"%Mike%");
希望这有帮助!
答案 3 :(得分:1)
该方法的条目是一个DataTable,其中包含查询执行的结果集。然后,您需要以这种方式迭代行和列:
foreach (DataRow dr in yourDataTable.Rows)
{
foreach(DataColumn col in yourDataTable.Columns)
{
try
{
if (dr[col].ToString().Contains("Mike"))
{
//Save this one!
}
}
catch
{
//it was not a string, go on then.
}
}
}