有没有办法在列表中查找具有Linq / Lambda表达式的特定类型的所有项目?
更新:由于答案,我意识到这个问题不够具体。我需要一个只包含特定类型项目的新列表。在我的例子中,该类没有任何子类,因此不需要考虑继承。
答案 0 :(得分:83)
像这样使用OfType<T>
:
foreach (var bar in MyList.OfType<Foo>()) {
...
}
答案 1 :(得分:37)
这会吗?
list.Where(t => t is MyType);
答案 2 :(得分:1)
这样的事情(如果使用Linq对象 - 它不能与Linq一起使用到实体):
var specificListOfTypes = from item in list
where item.GetType() == typeof(int)
select item;
答案 3 :(得分:0)
也许你可以使用......
List<object> list = new List<object>();
list.Add("string");
list.Add(9);
var allOfOneType = list.Where(i => i.GetType().Equals(typeof(string)));
答案 4 :(得分:-2)
我建议使用这个
var myLst = new List<object>();
var elements = myList.Where(item => item.GetType().IsInstanceOfType(typeof(MyClass)));
答案 5 :(得分:-3)
您可以使用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;