将foreach循环转换为linq

And*_*iff 2 c# linq foreach unity-game-engine

  1. 问题

我想将foreach循环转换为linq语句.

  1. 细节

我有以下统一类(来自元数据,删除了大部分功能)

public class Transform : Component, IEnumerable
{
    public IEnumerator GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)

我在我自己的类中有一个这个类的局部变量(继承),这是

Transform transform;
Run Code Online (Sandbox Code Playgroud)

我可以做到这一点

List<Transform> children = new List<Transform>();
foreach (Transform t in transform)
    children.Add(t);
Run Code Online (Sandbox Code Playgroud)

如何在Linq表达式中执行相同的操作?

Dr.*_*ABT 8

必须是一个IEnumerable<T>才能访问LINQ表达式.

从转换的一种方式IEnumerableIEnumerable<T>是使用OfType<T>Cast<T>扩展方法(如果你知道的类型).

例如

List<Transform> transforms = transform.Cast<Transform>().ToList();
Run Code Online (Sandbox Code Playgroud)

另请参见LINQ是否与IEnumerable一起使用

  • 谢谢!我刚刚完成了我的10k代表.喔喔!:) (3认同)