我想问一下如何使用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;
感谢您的回复。非常感谢你。
答案 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>
。