我正在尋找一種方法,在EF查詢中連鎖多個OR子句。
這里有一個函式的例子,當呼叫一個引數int[]時,正好包含2個元素,將用它們創建一個OR子句(當然,少于2個元素將導致一個例外,多于2個元素將被忽略):
public async Task<List< MyTable>>MyQuery(DbContext dbContext, int[] list)
{
IQueryable<MyTable> q = dbContext.MyTable。
q = q.Where(x => x。 Id == list[0] || x。 Id == list[1])。)
//在這里,我把其他幾個子句連鎖起來。
q = q.Where(x => x。 SomeOtherFiled == 123)。)
return await q.ToListAsync();
我想修改這段代碼,以便對陣列的所有元素(1-n;即任何長度)執行OR邏輯。在這個例子中,我使用的是int資料型別,但實際上它可以是EF資料集中的任何資料型別。幾個和條件可以被串聯起來(這里我用SomeOtherFiled作為例子)。我希望我很好地解釋了這個問題。
uj5u.com熱心網友回復:
聽起來你所描述的相當于SQL中的IN運算子(例如:WHERE Id IN (1,4,6))。
相等的Linq是這樣的:
int[] list = {1, 4,6}。
q = q.Where(x => list.Contains(x.Id))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/327154.html
標籤:
上一篇:SpringDATAJPA傳遞兩個引數-無法提取結果集;SQL[n/a];org.hibernate.exception.SQLGrammerException:無法提取結果集
下一篇:嘗試讀取陣列上的屬性“名稱”
