IList不包含定义<linq函数>

时间:2019-09-06 15:47:10

标签: c# linq

我有一个IList

IList list = GetList();

,并希望像FirstOrDefault()Where()那样使用Linq函数,但是它说:

  

IList不包含[linq函数]的定义

我在做什么错了?

2 个答案:

答案 0 :(得分:2)

确保您使用的是泛型 IList,且使用的类型是这样

IList<string> list = GetList();

然后您可以在该列表上使用LINQ函数。

答案 1 :(得分:2)

如果您的集合未实现通用接口,则可以使用CastOfType(广播+过滤器)扩展方法。

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();