如果我有一个通用的IEnumerable<int>
. 我可以简单地应用ToList()
or ToArray()
or FirstOrDefault()
。如何将这些方法应用于非泛型IEnumerable
?
问问题
5594 次
3 回答
9
你有几个选择:
如果您知道枚举中的所有对象都属于同一类型,则可以将其强制转换为泛型
IEnumerable<YourType>
。在最坏的情况下,您始终可以使用object
:object first = enumerable.Cast<object>().First();
或者您可以使用枚举器,迈出一步并获取当前元素:
IEnumerator enumerator = enumerable.GetEnumerator(); enumerator.MoveNext(); object first = enumerator.Current;
于 2013-07-18T12:06:51.357 回答
1
您在这里有两个选择:
遵循@Danier Gimenez 建议的问题并使用该
Cast<TResult>
方法。在演员表之后,您将获得一个可以应用该First()
方法的通用枚举。这也是最简单的实现。使用
GetEnumerator()
为您提供IEnumerator
. 从这里您可以遍历集合。从 开始MoveNext()
,您可以使用该Current
属性来获取第一个元素。
编辑: 安德烈领先于我。
于 2013-07-18T12:11:11.867 回答
1
看看这个示例代码很简单
IEnumerable 集合;--- 在这里填充集合--- collection.OfType().ToList() 或 collection.OfType().ToArray collection.OfType().ToList() 或 collection.OfType().ToArray() 它过滤 (int /MyClass) 类型对象并将其转换为列表或数组
于 2013-07-18T12:12:11.083 回答