我有三个班级:
public class class1 {}
public class class2 : class1 {}
public class class3 : class1 {}
以及class1
的项目列表,但我想只获取class2
类型的项目,例如:
list = list.where(x=>x.classType == class2)
这样做的正确方法是什么?
谢谢!
答案 0 :(得分:9)
您可能需要OfType<T>()
: -
var newList = list.OfType<Class2>().ToList();
除了更简洁之外,这还有一个额外的好处,newList
类型为List<Class2>
(而不是List<Class1>
恰好只包含{{1}的实例拯救你继续下线。
答案 1 :(得分:2)
您想使用GetType()
方法和typeof()
:
list = list.Where(x => x.GetType() == typeof(class2)).ToList();
或者,您可以使用is
:
list = list.Where(x => x is class2).ToList();