![](/img/trans.png)
[英]Deleting multiple records with Entity Framework using a single LINQ query
[英]Searching for multiple strings using single database query with entity framework and LINQ
假設我有一個包含兩列的數據庫表 (aTable)
編號:整數
名稱:字符串
要求:我想檢索 aTable.name 類似於字符串列表 (stringsToSearchFor) 的條目。
我在做什么:目前我正在使用以下方法
var result=new List<aTable>;
foreach (var aString in stringsToSearchFor)
{
var r = Context.Set<aTable>()
.Any(s => s.name.Contains(searchString))
.ToList();
res.AddRange(r);
}
return result.Distinct();
為了優化它,我嘗試通過消除 foreach 來更改代碼:
return Context.Set<aTable>()
.Any(s => stringsToSearchFor.Contains(s.name))
.Distinct()
.ToList();
但是,這並沒有提供與之前聲明相同的結果。 我相信第一個說法是正確的。
我的問題:如何在不創建 N 個數據庫查詢的情況下搜索多個字符串(如第二種方法)?
替代解決方案:使用 EF 6.2 Like
:
.Where(x => stringsToSearchFor.Any(s => DbFunctions.Like(x.name, "%" + s + "%")))
這樣的事情應該工作:
string[] stringsToSearchFor = new string[] { "text1", "text2" };
using (MyDbContext model = new MyDbContext())
{
var result = model.aTable
.Where(r => stringsToSearchFor.Any(s => r.name.Contains(s)))
.ToList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.