我有一个自定义对象列表:
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();