c# - 将 foreach 循环转换为 linq

标签 c# linq unity3d foreach

  1. 问题

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

  1. 详细信息

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

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();

另见 Does LINQ work with IEnumerable

关于c# - 将 foreach 循环转换为 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35153733/

相关文章:

c# - 获取目录名称的数字版本时出错

c# - 统一点击检测游戏对象

c# - 为什么字符串 IndexOf() 不区分大小写?

c# - 如何使一段数据可供调用堆栈下方的其他函数使用?

c# wpf MVVM 从 ObservableDictionary 获取 ObservableList

c# - 数据表的条件和合并,同时将数据从一个替换为另一个

c# - 包含日期的字符串的 Linq 大于和小于运算符

c# - 如何在保存后立即检索 objectId

c# - 如何使用Application.targetFrameRate设置目标帧速率以修复不良帧速率(vsync)

c# - SSIS - 插入大量行(亿行)的最佳方式