獲取嵌套集合包含項目的項目形成另一個集合


我正在嘗試獲取項目,其中嵌套集合包含項目或來自另一個集合的多個項目。如果我首先枚舉集合然後執行內存中.Where()過濾器,我會得到預期的集合。

var filterTagIds = new[] { 1, 2, 3 };

var works = base.DbSet
    .Include(p => p.Company)
        .ThenInclude(p => p.CompanyTags)
    .ToList()
    .Where(p => p.Company.CompanyTags.Any(q => filterTagIds.Contains(q.TagId)))
    .ToList();

但是,如果我嘗試在沒有枚舉的情況下執行此操作(我想在數據庫級別上執行此操作),則會出現異常。

var filterTagIds = new[] { 1, 2, 3 };

var works = base.DbSet
    .Include(p => p.Company)
        .ThenInclude(p => p.CompanyTags)
    .ToList()
    .Where(p => p.Company.CompanyTags.Any(q => filterTagIds.Contains(q.TagId)))
    .ToList();

這是我得到的例外:

var filterTagIds = new[] { 1, 2, 3 };

var works = base.DbSet
    .Include(p => p.Company)
        .ThenInclude(p => p.CompanyTags)
    .ToList()
    .Where(p => p.Company.CompanyTags.Any(q => filterTagIds.Contains(q.TagId)))
    .ToList();

我正在尋找在EF中可行的東西嗎?也許這只是EF-Core的一個問題?或者我做錯了什麼?謝謝。

一般承認的答案

https://github.com/aspnet/EntityFramework/issues/4596

已知問題,設​​置為使用EF的發布版本修復。





許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因