我堅持根據物體框架中的另一個 ID 串列選擇 ID 串列。
我用谷歌搜索并看到了一些例子,但我無法找到我正在尋找的答案
SELECT ID
FROM Main m
INNER JOIN MainMapping cm ON mm.MainId = m.ID
WHERE mm.SecondId IN (1, 2, 3, 4, 5, 6)
我正在嘗試將此 SQL 轉換為 EF Linq。
這是我到目前為止所得到的:
var listOfId = await _context.Main
.Include(main => main.MainMapping)
.Where(main => main.MainMapping
.Where(mapping => request.SecondIdList.Any(y => y == mapping.SecondId)))
.ToListAsync();
但我不斷收到錯誤。我錯過了什么?
這些是錯誤:
錯誤 CS1662 無法將 lambda 運算式轉換為預期的委托型別,因為塊中的某些回傳型別不能隱式轉換為委托回傳型別
錯誤 CS0029 無法將型別“System.Collections.Generic.IEnumerable<Testing1.Domain.Entities.MainMapping>”隱式轉換為“bool”
uj5u.com熱心網友回復:
好的,首先,每次呼叫.Where過濾器時,必須回傳一個boolean運算式。鑒于您正在使用Linq to SQL您的運算式應該回傳一些可以決議為sql語言的內容。您可以嘗試使用.Any您的集合屬性回傳一個布林值并Contains生成一個IN陳述句。然后,要回傳 的集合Id,請使用Select更改輸出。EF 會將其決議為有效的 sql 運算式。
var listOfId = await _context.Main
.Include(main => main.MainMapping)
.Where(main => main.MainMapping.Any(mapping => request.SecondIdList.Contains(mapping.SecondId)))
.Select(man => main.Id)
.ToListAsync();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344741.html
