簡體   English   中英

Any on enums inside Where in Entity Framework Core

[英]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之間添加AsQueryableAsEnumerable ,但這沒有幫助。 這是我得到的主要錯誤:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM