,c#,linq"/>

首页 > 解决方案 > IList 不包含定义

问题描述

我有一个IList

IList list = GetList();

并想在它上面使用 Linq 函数,FirstOrDefault()Where()它说:

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

我究竟做错了什么?

标签: c#linq

解决方案


如果您的集合没有实现通用接口,您可以使用CastOfType(Cast + Filter) 扩展方法。

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

推荐阅读