簡體   English   中英

LINQ 內部 WHERE - 內部集合包含字符串

[英]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.

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