我有一个IList
IList list = GetList();
,并希望像FirstOrDefault()
或Where()
那样使用Linq函数,但是它说:
IList不包含[linq函数]的定义
我在做什么错了?
答案 0 :(得分:2)
确保您使用的是泛型 IList
,且使用的类型是这样
IList<string> list = GetList();
然后您可以在该列表上使用LINQ函数。
答案 1 :(得分:2)
如果您的集合未实现通用接口,则可以使用Cast
或OfType
(广播+过滤器)扩展方法。
IList list = GetList();
string first = list.Cast<string>().FirstOrDefault();
您可以将这些方法用于实现IEnumerable
的任何方法。当然,仅当列表确实包含字符串时,它才有效。如果可以包含任何内容,则可以使用:
string first = list.Cast<Object>().Select(obj => obj?.ToString() ?? "").FirstOrDefault();
如果您只想使用字符串对象,则可以使用OfType
,如上所述:
string first = list.OfType<string>().FirstOrDefault();