簡體   English   中英

如何編寫linq表達式以根據狀態過濾導航屬性?

[英]how to write linq expression to filter navigational property based on status?

父類別包含子類別列表,子類別包含子類別列表。 現在,我想獲取所有父類別(如果其狀態為true)以及子類別。 提取時,我還要檢查子類別的狀態。 我目前的查詢是

 db.Categories.Where(x => x.Status)
.Include(x=>x.SubCategories)
. OfType<ParentCategory>().ToList(); 

如何在此查詢中檢查子類別的狀態?

嘗試LINQ的SelectMany()方法。 它用於展平嵌套的集合。 無需使用嵌套的for循環,我們可以以更“ LINQ”的方式完成任務。

前例如下:

Master m1 = new Master() { name = "A", lstObj = new List<obj> { new obj { i = 1, s = "C++" }, new obj { i = 1, s = "C#" }, new obj { i = 1, s = "Java" } } };

Master m2 = new Master() { name = "A", lstObj = new List<obj> { new obj { i = 4, s = "PHP" }, new obj { i = 5, s = "Ruby" }, new obj { i = 6, s = "Perl" } } };

List<Master> lstMasters = new List<Master> { m1, m2 };
var result = lstMasters.SelectMany(m => m.lstObj).Where(o => o.s == "PHP");

只需將Master類替換為您自己的Master類即可。

暫無
暫無

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

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