[英]linq search multiple columns
我想使用ling-to-sql在多列中搜索一個字符串,我想知道如何編寫where
子句。 這就是我所擁有的:我正在傳遞要搜索的ID列表以及搜索詞:
public List<long> Seach(string TheSearchTerm, List<long> TheIDs)
{
using (SomeDataContext TheDC = new SomeDataContext())
{
var TheOutput = (from t in TheDC.SomeTable
where TheIDs.Contains(t.ID) &&
where "TheSearchTerm is in one of the columns"
select t.ID).ToList();
}
}
如何編寫搜索所有列的第二個where
子句? 我想為每一列寫一個where子句,但我想知道是否有更好的方法。
謝謝。
我有一個名為SearchExtensions的nuget包解決了這個問題:
var result = TheDC.SomeTable.Search(t => t.Id).EqualTo(TheIDs)
.Search(t => t.Column1, t => t.Column2, t => t.Column3)
.Containing(TheSearchTerm)
.Select(t => t.ID).ToList();
或者,如果要搜索所有字符串屬性,可以執行以下操作:
var result = TheDC.SomeTable.Search(t => t.Id).EqualTo(TheIDs)
.Search().Containing(TheSearchTerm)
.Select(t => t.ID).ToList();
這兩種方法都將創建表達式樹以向sql server發送正確的指令,這意味着只從數據庫返回匹配的記錄。
var TheOutput = (from t in TheDC.SomeTable
where TheIDs.Contains(t.ID) && (
t.column1.Contains(TheSearchTerm) ||
t.column2.Contains(TheSearchTerm) ||
t.column3.Contains(TheSearchTerm) )
select t.ID).ToList();
}
您應該只有一個where子句,並將所有列的檢查與||
結合起來 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.