2013-12-09 48 views
1

我想問一下如何使用LINQ的對象集合中過濾特定類?C#的LINQ類搜索 - 如何篩選對象集合

Class1 c1 = new Class1(); 
Class2 c2 = new Class2(); 
List<object> c = new List<object>(); 
c.Add(c1); 
c.Add(c1); 
c.Add(c2); 

我正在尋找這樣的事情:

c.Select(); 
// or 
IEnumerable<object> x = from y in c; 

感謝您的答覆。非常感謝。

回答

3

您可以使用OfType<T>這一點。

var results = c.OfType<Class1>(); 

Console.WriteLine (c.OfType<Class1>().Count()); 

結果

一點題外話:.Select()不選擇任何內容。那麼,它的確如此:它「選擇」每個元素並將其投影到一個新對象。但它不會在某些標準上選擇對象。對於數值,有.Where()和同樣的選擇器和.OfType<T>用於類型選擇。

+0

這工作,這是我正在尋找。非常感謝。 –

3
c.OfType<Class1>() // returns an IEnumerable<Class1> with all instances of Class1 within C 
c.OfType<Class2>() // same thing, but for Class2 

使用OfType<T>方法,然後你可以使用的強類型的IEnumerable的LINQ查詢過濾器的其餘部分。

+0

此代碼也可以使用。先生,非常感謝你。 –