代码之家  ›  专栏  ›  技术社区  ›  bitbonk

使用linq在列表中查找特定类型的第一个元素

  •  14
  • bitbonk  · 技术社区  · 16 年前

    在使用linq和c_的元素列表中,找到第一个特定类型的项的最短符号是什么?

    4 回复  |  直到 16 年前
        1
  •  28
  •   LukeH    16 年前
    var first = yourCollection.OfType<YourType>().First();
    

    请注意 First 如果没有类型的元素,方法将引发异常 YourType . 如果你不想要的话,你可以用 FirstOrDefault Take(1) 相反,这取决于你想要的行为。

        2
  •  12
  •   Alexandru    16 年前

    使用OFTYPE扩展方法:

    public static T FindFirstOfType<T>(IEnumerable list){
     return list.OfType<T>().FirstOrDefault();
    }
    
        3
  •  7
  •   jason    16 年前

    你想要 Enumerable.OfType :

    list.OfType<MyType>().First();
    
        4
  •  5
  •   hugoware    16 年前

    你可以用 FirstOrDefault 并传入委托以用于比较。

    object[] list = new object[] {
        4,
        "something",
        3,
        false,
        "other"
    };
    
    string first = list.FirstOrDefault(o => o is string); //something