簡體   English   中英

實體框架對具有列表的實體應用過濾器

[英]Entity Framework apply filter with entities that have lists

我有使用實體框架的這段代碼

 var test = _dbContext.Category
                      .Include(t => t.Items)
                      .Where(t => t.items.show == true)
                      .ToList();

類別具有項目列表。 但是,我無法應用過濾器show == true

為什么會這樣呢? 我如何解決它?

謝謝

t=>t.items.show==true中的項目是一個集合,而不是單個項目,因此沒有show屬性。

如果只需要使用show == true加載項目,則可以分別加載它們:

var categories = _dbContext.Category.ToList();
var items = _dbContext.Category.SelectMany(x => x.Items).Where(x => x.show == true).ToList();

EF會將這些項目自動添加到適當的類別。

您可以將Any用於此類請求,並且如果不使用除過濾之外的其他項目,則可以避免使用Include。

var test = _dbContext.Category
                      .Where(t => t.items.Any(item=> item.show == true))
                      .ToList();

PS:我強烈建議使用C#命名約定。 ItemsShow是屬性,則它們將更加准確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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