c# - IList 不包含定义
问题描述
我有一个IList
IList list = GetList();
并想在它上面使用 Linq 函数,FirstOrDefault()
但Where()
它说:
IList 不包含 [linq 函数] 的定义
我究竟做错了什么?
解决方案
如果您的集合没有实现通用接口,您可以使用Cast
或OfType
(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();
推荐阅读
- powershell - 在 Pester 中执行函数时它会跳过 it 语句,但不应该
- c# - 在 XDocument 中搜索 XML 节点时避免 Try n Catch
- here-api - HERE 地图的 API (datalens) 的 SSL 证书已过期,是否有解决方法?
- java - 无法在 docker 容器内以非阻塞方式读取类路径资源文件
- c# - 将按下的图片框连接到某个字母
- javascript - 如何像另一个事件一样改变一个事件的行为?
- python - 如何在使用 pipenv 和 VS Code 时调试 Django?
- azure - privacySetting 参数值不是允许值的一部分 - Azure LogicApps 的 SQL 连接
- powershell - 您可以直接在 PowerShell 扩展字符串中使用格式说明符吗?
- java - iText 文档获取 URL