我试图通过比较传递给方法的枚举来从列表中获取对象列表。
public List<IAnimal> GetListOfAnimalsByType(IAnimal.AnimalType animalType)
{
List<IAnimal> animalTypeList = animalList.SelectMany(ani => ani.Type == animaleType);
if(animalTypeList != null)
{
return animalTypeList;
}
else
{
return null;
}
}
答案 0 :(得分:3)
看起来你真的只想要Where
而不是SelectMany
:
public List<IAnimal> GetListOfAnimalsByType(IAnimal.AnimalType animalType)
{
return animalList.Where(ani => ani.Type == animaleType).ToList();
}
SelectMany
用于从原始序列中的每个元素中提取一个序列,通常&#34;展平&#34;结果序列在一起......而Where
用于过滤。
此外:
ToList()
调用是必要的,因为LINQ返回IEnumerable<T>
或IQueryable<T>
,而不是List<T>
if
语句是不必要的,因为生成序列的LINQ运算符(例如Where
,Select
等永远不会返回null;如果需要,它们将返回空序列animalTypeList
的值...&#34;如果值为null,则返回null ,否则返回值&#34; ...所以你仍然可以只返回通话结果答案 1 :(得分:2)