在 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();
我有一个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();