簡體   English   中英

linq搜索多列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM