有没有一种方法可以使用Linq / Lambda表达式在列表中查找所有特定类型的项目?
更新:由于答案,我意识到问题不够具体。 我需要一个只包含特定类型项的新列表。 在我的情况下,该类没有任何子类,因此不需要考虑继承。
OfType<T>
的方式如下:foreach (var bar in MyList.OfType<Foo>()) {
...
}
list.Where(t => t is MyType);
List<object> list = new List<object>();
list.Add("string");
list.Add(9);
var allOfOneType = list.Where(i => i.GetType().Equals(typeof(string)));
如果使用Linq to objects,可以这样写(但是在Linq to entities中不起作用):
var specificListOfTypes = from item in list
where item.GetType() == typeof(int)
select item;
您可以使用GetType()方法并与指定类型进行比较。
例如,我从下面的列表中选择所有字符串类型的值:
var myList = new List<object>();
myList.Add(5);
myList.Add("My life");
var result = from obj in myList
where obj.GetType() == typeof(string)
select obj;