我有一个项目列表列表,我想知道是否有人可以帮我使用lambda表达式来过滤此列表.
这是我的列表的样子:
List<List<Item>> myList = ExtractList();
Run Code Online (Sandbox Code Playgroud)
这是我的Item类的样子:
public class Item {
public string Name {get;set;}
public string Action {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我想过滤此列表并仅获取项目列表列表,其中项目名称="ABC"和项目操作="123".
谢谢你的帮助
Rom*_*kov 29
简单:
myList.SelectMany(sublist => sublist)
.Where(item => item.Name == "ABC" && item.Action == "123");
Run Code Online (Sandbox Code Playgroud)
这将为您提供所有列表中的所有项目.
如果要选择包含该项目的子列表,请执行以下操作:
myList.Where(sublist => sublist.Any(item => item.Name == "ABC" && item.Action == "123"));
Run Code Online (Sandbox Code Playgroud)
最后,如果您想保留相同的结构,但只保留与过滤器匹配的项目:
var newList = myList.Select(sublist => sublist
.Where(item => item.Name == "ABC" && item.Action == "123")
.ToList()).ToList();
Run Code Online (Sandbox Code Playgroud)