将 foreach 循环转换为 linq
本文关键字:linq 转换 循环 foreach | 更新日期: 2023-09-27 18:32:55
- 问题所在
我想将 foreach 循环转换为 linq 语句。
- 详情
我有以下 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 表达式中执行相同的操作?
它
必须是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();