例如我有一個串列testList
public class testList
{
public string name {get;set;}
public string code {get;set;}
}
我想去資料庫找同時匹配name和code的行
寫成
db.where(m=>testList.contains(new {m.name,m.code}))
或者
db.where(m=>testList.any(any=>any.name==m.name&&any.code==m.code))
EF會拋出無法翻譯的例外
我現在都是
var queryList=db.where(m=>m.testList.select(s=>s.name).contains(m.name)&&m.testList.select(s=>s.code).contains(m.code)).toList();
var result=queryList.where(m=>testList.contains(new {m.name,m.code}))
這樣在篩選兩次,感覺效率很低
想在資料庫進行一次查詢應該怎么寫
uj5u.com熱心網友回復:
db.AsEnumerable().where(m=>testList.any(any=>any.name==m.name&&any.code==m.code))不過表資料多時會慢
uj5u.com熱心網友回復:
試試這樣呢db.where(m=>testList.Select(p=>p.name+p.code).Contains(m.name+m.code))
uj5u.com熱心網友回復:
本身是想優化一下的,如果慢的話那肯定就不行了。
uj5u.com熱心網友回復:
還沒試,不過這樣的處理方式并不嚴謹啊,a,bc和ab,c滿足條件但并不是想要的
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/273932.html
標籤:LINQ
下一篇:試圖加載格式不正確的程式
