我经常发现自己编写这样的代码:
collection.First(s => s is MyType) as MyType;
Run Code Online (Sandbox Code Playgroud)
是否有更具体的Linq方法,它返回某种类型的第一个元素?
像这样:
collection.FirstOfType<MyType>();
Run Code Online (Sandbox Code Playgroud)
我还看了Jon Skeets MoreLinq项目,但没有运气
Ser*_*kiy 12
用于Enumerable.OfType<T>按指定类型过滤集合:
collection.OfType<MyType>().First();
Run Code Online (Sandbox Code Playgroud)
注意 - 如果MyType集合中可能没有项目存在,则使用FirstOrDefault()以避免异常.
在内部OfType简单地使用is运算符来产生与给定类型兼容的所有项目.像这样的东西(实际上OfType返回OfTypeIterator迭代集合):
public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source)
{
foreach (object obj in source)
{
if (!(obj is TResult))
continue;
yield return (TResult)obj;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |