如何按类型筛选集合

本文关键字:集合 筛选 类型 何按 | 更新日期: 2023-09-27 17:53:09

我有三个类:

public class class1 {}
public class class2 : class1 {}
public class class3 : class1 {}

class1的项目列表,但我只想获得class2类型的项目,例如:

list = list.where(x=>x.classType == class2)

怎么做才是正确的?

谢谢!

如何按类型筛选集合

您可能需要OfType<T>():-

var newList = list.OfType<Class2>().ToList();

以及更简洁,这有一个额外的好处,newListList<Class2>类型(而不是碰巧只包含Class2实例的List<Class1>),节省了您进一步的转换。

您想使用GetType()方法和typeof():

list = list.Where(x => x.GetType() == typeof(class2)).ToList(); 

或者,您可以使用is:

list = list.Where(x => x is class2).ToList();