C#Linq类搜索 - 如何过滤对象集合

时间:2013-12-09 01:07:58

标签: c# linq

我想问一下如何使用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;

感谢您的回复。非常感谢你。

2 个答案:

答案 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查询过滤器。

答案 1 :(得分:3)

您可以使用OfType<T>

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

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

结果

  

2

作为旁注:.Select()没有选择任何内容。嗯,在某种程度上它:它“选择”每个元素并将其投影到一个新对象。但它并没有在某些标准上选择对象。对于值,类型选择有.Where()和同样的选择器和.OfType<T>