如何搜索查询结果集中所有字段的内容?

时间:2012-04-03 20:42:41

标签: c# .net sql-server tsql linq-to-sql

我正在尝试创建一个搜索结果集中每个字段内容的常规搜索功能。

例如,如果我在TSQL中编写一个函数,它返回一个包含100行的结果集,并且字段为TicketIDFirstNameLastName和{{1}我想为每个字段搜索字符串'Mike'的每个字段。

因此,如果“Mike”这个词在任何一个字段中,那么该记录将包含在我的搜索中。

我该怎么做?

4 个答案:

答案 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.
        }
    }
}