我有一个IList:
IList list = CallMyMethodToGetIList();
我不知道我能得到它的类型
Type entityType = list[0].GetType();`
我想用LINQ搜索此列表:
var itemFind = list.SingleOrDefault(MyCondition....);
感谢您的帮助。
答案 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"));