我有一个IList
IList list = GetList();
Run Code Online (Sandbox Code Playgroud)
并想在其上使用 Linq 函数,例如FirstOrDefault()orWhere()但它说:
IList 不包含 [linq 函数] 的定义
我究竟做错了什么?
如果您的集合未实现通用接口,您可以使用Cast或OfType(Cast + Filter) 扩展方法。
IList list = GetList();
string first = list.Cast<string>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
您可以将这些方法与任何实现IEnumerable. 当然,只有当列表确实包含字符串时它才有效。如果它可以包含您可以使用的任何内容:
string first = list.Cast<Object>().Select(obj => obj?.ToString() ?? "").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
如果您只想要字符串对象,可以OfType如上所述使用:
string first = list.OfType<string>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
确保您将泛型 IList与您使用的类型一起使用,如下所示
IList<string> list = GetList();
Run Code Online (Sandbox Code Playgroud)
然后您可以使用该列表上的 LINQ 函数。
| 归档时间: |
|
| 查看次数: |
3413 次 |
| 最近记录: |