[英]LINQ inner WHERE - inner collection contains string
假設我有以下集合:
ONE
- Banana
- Mango
TWO
- Apple
- Mango
THREE
- Orange
- Pear
我只想獲取包含 Mango 的集合,例如:
ONE
- Banana
- Mango
TWO
- Apple
- Mango
以下示例仍然返回一個包含 3 個項目的集合:
List<Order> list = new List<Order> {
new Order { Id = 1, Name = "ONE", Items = new List<Items> { new Items { Id = 1, Nama = "Banana" }, new Items { Id = 2, Nama = "Mango" } }},
new Order { Id = 1, Name = "TWO", Items = new List<Items> { new Items { Id = 1, Nama = "Orange" }, new Items { Id = 2, Nama = "Mango" } }},
new Order { Id = 1, Name = "THREE", Items = new List<Items> { new Items { Id = 1, Nama = "Pear" }, new Items { Id = 2, Nama = "Chery" } }},
};
var result = list.Where(x => x.Items.Any(y => !y.Nama.Equals("Mango"))).ToList();
您將獲得所有集合,其中至少有一個不是 Mango 的項目。 嘗試刪除“!”。
var result = list.Where(x => x.Items.Any(y => y.Nama.Equals("Mango"))).ToList();
您快到了! 嘗試閱讀代碼的邏輯以了解它在做什么。
您內部的 Where 子句邏輯是“檢查列表,如果任何條目不等於“芒果”,則我們保留該列表”。 使用此邏輯,列表中的每個條目都有一個 List,其中的條目不等於“Mango”。
反轉您的邏輯,使其顯示“檢查列表,如果任何條目等於“芒果”,則我們保留該列表”。
var result = list.Where(x => x.Items.Any(y => y.Nama.Equals("Mango"))).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.