假设我有以下集合:
ONE
- Banana
- Mango
TWO
- Apple
- Mango
THREE
- Orange
- Pear我只想获取其中包含芒果的集合,例如:
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();发布于 2020-11-05 03:33:00
您将获取其中至少有一项不是Mango的所有集合。尝试删除"!“。
var result = list.Where(x => x.Items.Any(y => y.Nama.Equals("Mango"))).ToList();发布于 2020-11-05 03:35:21
你就快到了!试着读出你的代码的逻辑,以理解它在做什么。
你内部的Where子句的逻辑是‘检查列表,如果有任何条目不等于"Mango",那么我们将保留该列表’。按照这种逻辑,列表中的每个条目都有一个列表,其中的条目不等于"Mango“。
颠倒您的逻辑,使其显示为‘检查列表,如果有任何条目等于"Mango",则我们保留该列表’。
var result = list.Where(x => x.Items.Any(y => y.Nama.Equals("Mango"))).ToList();
https://stackoverflow.com/questions/64686487
复制相似问题