[英]Any on enums inside of Where in Entity Framework Core
我在這段代碼中不斷收到實體框架錯誤(一致性類型是枚舉):
IQueryable<Examination> examinationsSet = _context.Examinations;
if (consistency.Length > 0)
{
examinationsSet = examinationsSet
.Where(x => consistency.Any(y => (int)y == (int)x.Consistency));
}
我嘗試在一致性和Any
之間添加AsQueryable
或AsEnumerable
,但這沒有幫助。 這是我得到的主要錯誤:
System.InvalidOperationException:“LINQ 表達式“在哪里(
來源:數據庫集,
謂詞:(e) => Any(
來源:(未處理的參數:__consistency_0),
謂詞:(y) => (int)y == (int)e.Consistency))'
無法翻譯。 以可翻譯的形式重寫查詢,或通過插入對 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的調用顯式切換到客戶端評估。
當實體框架查詢執行時,它被轉換為 SQL。 最好在查詢之外做盡可能多的邏輯以避免混淆翻譯。
嘗試這樣的事情:
List<int> consistencyNumbers = consistency.Select(item => (int)item).ToList();
IQueryable<Examination> examinationsSet = consistencyNumbers.Count > 0
? _context.Examinations.Where(x => consistencyNumbers.Any(y => y == (int)x.Consistency))
: _context.Examinations;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.