Lambda Expression用于过滤项列表的列表

zSy*_*sis 11 .net c# lambda

我有一个项目列表列表,我想知道是否有人可以帮我使用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)