在 C# 中,从 List<BaseClass> 获取 List<DerivedClass>

In C#, get a List<DerivedClass> from a List<BaseClass>

我有一个Class,食物有两个派生类:肉类和蔬菜。

如果我有一份食物清单,我可以获得一份(子)肉类清单

List<Food> allTheFood = GetListOfFood();
List<Food> justTheMeats = allTheFood.Where(x => x is Meat);

但这给了我一个食物类型的列表(它们恰好都是肉),而不是肉的列表。

显然,我可以创建一个新的空列表,然后执行 foreach 并将 justTheMeats 中的每个项目从 Food 转换为 Meat,然后将它们添加到新列表中,但这似乎是一种复杂的方法。

有nicer/easier/cleaner方法吗?

谢谢

是的,使用 linq OfType

var justTheMeats = allTheFood.OfType<Meat>().ToList();