将 foreach 循环转换为 linq

本文关键字:linq 转换 循环 foreach | 更新日期: 2023-09-27 18:32:55

  1. 问题所在

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

  1. 详情

我有以下 unity 类(来自元数据,删除了大部分函数)

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 表达式中执行相同的操作?

将 foreach 循环转换为 linq

必须是IEnumerable<T>才能访问 LINQ 表达式。

IEnumerable 转换为 IEnumerable<T> 的一种方法是使用 OfType<T>Cast<T>扩展方法(如果您知道类型)。

例如

List<Transform> transforms = transform.Cast<Transform>().ToList();

另请参阅 LINQ 是否适用于 IEnumerable

如果

Transform没有实现IEnumerable<Transform>,您可以使用Enumerable.Cast

List<Transform> children = transform.Cast<Transform>().ToList(); 

否则很简单:

List<Transform> children = transform.ToList();