我想将foreach循环转换为linq语句。
我有以下统一类(来自元数据,删除了大部分功能)
public class Transform : Component, IEnumerable
{
public IEnumerator GetEnumerator();
}
我在我自己的类中有一个这个类的局部变量(继承),它是
Transform transform;
我可以这样做
List<Transform> children = new List<Transform>();
foreach (Transform t in transform)
children.Add(t);
如何在Linq表达式中执行相同的操作?
答案 0 :(得分:8)
它必须是IEnumerable<T>
才能访问LINQ表达式。
从IEnumerable
转换为IEnumerable<T>
的一种方法是使用OfType<T>
或Cast<T>
扩展方法(如果您知道类型)。
e.g。
List<Transform> transforms = transform.Cast<Transform>().ToList();
答案 1 :(得分:4)
如果Enumerable.Cast
未实施Transform
,您可以使用IEnumerable<Transform>
:
List<Transform> children = transform.Cast<Transform>().ToList();
否则它很简单:
List<Transform> children = transform.ToList();