2015-06-03 64 views
3

我有三類:如何按類型篩選集合?

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

class1項目清單,但我想只有class2型的,是這樣的:

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

是如何的正確方法這樣做?

謝謝!

+1

你做一個拉姆達外以同樣的方式。 – SLaks

回答

9

你可能想OfType<T>(): -

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

除了作爲更簡潔,這有附加的好處newListList<Class2>類型(而不是一個List<Class1>恰好包含Class2唯一實例)節省您進一步鑄造的路線的。

+0

它解決了我的問題。非常感謝你! – joacoleza

2

您要使用的GetType()方法和typeof()

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

或者,你可以使用is

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

打我吧。這裏的MSDN鏈接: https://msdn.microsoft.com/en-us/library/58918ffs.aspx?f=255&MSPPError=-2147217396 – maniak1982

+0

這兩種方式的工作完美!感謝您的回答。 – joacoleza