Lambda用于嵌套数组

May*_*aya 4 .net c# arrays lambda .net-4.0

我有一个自定义对象列表:

List<SomeObject> someobjects = getAllSomeObjects();
List<SomeObject> someobjectsfiltered = new List<SomeObject>();

class SomeObject
{
  List <AnotherList>
}

class AnotherList
{
  public string Name{get;set;}
  public Categories category {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

所以我试图使用Lambda获取特定类型的All AnotherList项

someobjectsfiltered = someobjects.SelectMany(s => s.AnotherList.FindAll(a => a.category == SomeCategory));
Run Code Online (Sandbox Code Playgroud)

但我得到了

无法将IEnumerable类型隐式转换为Generic.List

错误

不知道怎么解决这个问题?

非常感谢.

tva*_*son 5

你需要抛出一个ToList()结尾或改变结果的类型,IEnumerable<SomeObject>因为,正如错误所说,你不能分配一个IEnumerable<T>类型的变量List<T>.

someobjectsfiltered = someobjects.SelectMany(s => s.AnotherList.FindAll(a => a.category == SomeCategory))
                                 .ToList();
Run Code Online (Sandbox Code Playgroud)

根据评论进行编辑

如果您想要的是SomeObjects具有包含与您可以使用的类别匹配的项目的列表.

someobjectsfiltered = someobjects.Where( s => s.AnotherList.Any( a => a.category == SomeCategory ))
                                 .ToList();
Run Code Online (Sandbox Code Playgroud)