我有三類:如何按類型篩選集合?
public class class1 {}
public class class2 : class1 {}
public class class3 : class1 {}
和class1
項目清單,但我想只有class2
型的,是這樣的:
list = list.where(x=>x.classType == class2)
是如何的正確方法這樣做?
謝謝!
我有三類:如何按類型篩選集合?
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();
除了作爲更簡潔,這有附加的好處newList
是List<Class2>
類型(而不是一個List<Class1>
恰好包含Class2
唯一實例)節省您進一步鑄造的路線的。
它解決了我的問題。非常感謝你! – joacoleza
您要使用的GetType()
方法和typeof()
:
list = list.Where(x => x.GetType() == typeof(class2)).ToList();
或者,你可以使用is
:
list = list.Where(x => x is class2).ToList();
打我吧。這裏的MSDN鏈接: https://msdn.microsoft.com/en-us/library/58918ffs.aspx?f=255&MSPPError=-2147217396 – maniak1982
這兩種方式的工作完美!感謝您的回答。 – joacoleza
你做一個拉姆達外以同樣的方式。 – SLaks