簡體   English   中英

在Linq Select上調用ToList()

[英]Calling ToList() on Linq Select

我正在嘗試為每個記錄迭代一個稱為TransformCvlValue的集合。

fields?.Select(x => TransformCvlValue(x, cvl)).ToList();

如果我調用.ToList()它將按預期工作。 為什么需要調用.ToList()

還有另一種方法嗎?

IEnumerable<T>上調用Select()不會立即執行操作,而是使用指定的轉換/操作構建新的IEnumerable<T> 通常,僅在實現IEnumerable<T>時才調用LINQ擴展方法,例如,通過在foreach對其進行迭代或通過調用.ToList()

當您確實想將元素從一種類型投射到另一種類型時,例如應該通過對元素應用投射,應該主要使用Select() 當您要為IEnumerable<T>中的每個元素調用方法時, 不應使用它。

對我來說,最易讀的直接方法是簡單地遍歷這些字段:

if (fields != null)
{
    foreach (var field in fields)
    {
        TransformCvlValue(field, cvl);
    }
}

這樣可以明確您打算執行的代碼,並且當您或您的同事將來必須維護代碼時,很容易理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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