2012-04-03 59 views
3

我正在嘗試創建一個通用搜索功能來搜索結果集中每個字段的內容。如何搜索查詢結果集中所有字段的內容?

因此,舉例來說,如果我是寫在TSQL函數返回一個包含100行和領域TicketIDFirstNameLastNameComment我想尋找這些領域中的每一個爲每個記錄的結果集字符串'邁克'。

所以基本上,如果單詞'邁克'是在任何這些領域,該記錄將包括在我的搜索。

我該怎麼做?

回答

1
from x in someTableOrQuery 
where x.FirstName.Contains(str) || x.LastName.Contains(str) || ... 
select x 

這只是普通的C#。不需要任何技巧。

請注意,這將轉化爲SQL中的LIKE表達式。但是你不需要做手動字符串連接,這很容易出現錯誤(在這種情況下不是SQL注入)。

+0

x未定義 – Paparazzi 2012-04-04 01:58:45

+0

我改進了示例代碼。 – usr 2012-04-04 09:17:26

1

或者您可以使用SqlMethods.Like方法,因此您可以搜索表達式以查找特定模式。

事情是這樣的:

where SqlMethods.Like(str,"%Mike%"); 

希望這有助於!

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