[英]convert foreach loop to linq
我想將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表達式中執行相同的操作?
它必須是IEnumerable<T>
才能訪問LINQ表達式。
從IEnumerable
轉換為IEnumerable<T>
一種方法是使用OfType<T>
或Cast<T>
擴展方法(如果您知道類型)。
例如
List<Transform> transforms = transform.Cast<Transform>().ToList();
如果Transform
未實現IEnumerable<Transform>
則可以使用Enumerable.Cast
:
List<Transform> children = transform.Cast<Transform>().ToList();
否則它很簡單:
List<Transform> children = transform.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.