使用LINQ在IList中查找项目

时间:2013-03-07 20:42:43

标签: c# .net linq list

我有一个IList:

IList list = CallMyMethodToGetIList();

我不知道我能得到它的类型

Type entityType = list[0].GetType();`

我想用LINQ搜索此列表:

var itemFind = list.SingleOrDefault(MyCondition....);

感谢您的帮助。

3 个答案:

答案 0 :(得分:24)

简单:

IList list = MyIListMethod();

var item = list
    .Cast<object>()
    .SingleOrDefault(i => i is MyType);

或:

IList list = MyIListMethod();

var item = list
    .Cast<object>()
    .SingleOrDefault(i => i != null);
希望这有帮助!

答案 1 :(得分:3)

IList list = ...

// if all items are of given type
IEnumerable<YourType> seq = list.Cast<YourType>().Where(condition);

// if only some of them    
IEnumerable<YourType> seq = list.OfType<YourType>().Where(condition);

答案 2 :(得分:0)

正如JakobMöllås所说,你可以使用动态。至少它适用于LinqPad:

IList list = new List<string>();
list.Add("TEST");
list.Add("NOT");
Console.WriteLine(list.Cast<dynamic>().FirstOrDefault(l => l== "NOT"));