2013-12-09 44 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

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