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

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;}
}

所以我试着用lambda获取其他所有特定类型的列表项
someobjectsfiltered = someobjects.SelectMany(s => s.AnotherList.FindAll(a => a.category == SomeCategory));

但我知道
无法隐式转换类型
IEnumerable到generic.list
错误
知道怎么解决这个问题吗?
非常感谢。

最佳答案

您需要在末尾抛出ToList()或将结果的类型更改为IEnumerable<SomeObject>,因为正如错误所述,您不能将IEnumerable<T>赋给List<T>类型的变量。

someobjectsfiltered = someobjects.SelectMany(s => s.AnotherList.FindAll(a => a.category == SomeCategory))
                                 .ToList();

基于评论编辑
如果您想要的是SomeObjects列表,其中包含与您可以使用的类别相匹配的项。
someobjectsfiltered = someobjects.Where( s => s.AnotherList.Any( a => a.category == SomeCategory ))
                                 .ToList();

09-25 21:42