Linq找到所有类型的

时间:2010-07-13 11:00:30

标签: c# linq

有没有办法在列表中查找具有Linq / Lambda表达式的特定类型的所有项目?

更新:由于答案,我意识到这个问题不够具体。我需要一个只包含特定类型项目的新列表。在我的例子中,该类没有任何子类,因此不需要考虑继承。

6 个答案:

答案 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;