【发布时间】:2017-03-20 04:51:35
【问题描述】:
从System.Collections.IEnumerable(仅包含T 类型元素)获取通用IEnumerable<T> 的最简单方法是什么?
有人对我说应该有简单的(避免使用 LINQ)标准包装器,但我找不到。
【问题讨论】:
-
我没看懂你的问题,你能说清楚点吗?
-
使用 OfType 或 Cast 扩展。
-
您很可能正在寻找
Cast方法,但它被认为是LINQ(在Enumerable类中定义)。如果您确定它只包含T类型元素,您可以使用简单的 C# 转换,例如(IEnumerable<T>)enumerable -
@IvanStoev 简单转换仅在底层类型 also 实现
IEnumerable<T>时才有效。例如static IEnumerable Test() { yield return 1;yield return 2;}只包含int类型的元素,但不能转换为IEnumerable<int>。 -
@MarcoSalerno 而不是“避免 Linq”我想说避免“Linq.Expression”。在我的想象中,每个 System.Linq 功能都在内部进行了表达式解析:) 对于这样的任务来说,这太过分了,但现在我发现它是错误的。 Cast
不包含表达式,是我需要的。
标签: c# collections