簡體   English   中英

將foreach循環轉換為linq

[英]convert foreach loop to linq

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

另請參見LINQ是否與IEnumerable一起使用

如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM