共用方式為


延後執行範例

本主題顯示延後執行與延遲評估如何影響您 LINQ to XML 查詢的執行。

範例

下列範例顯示利用使用延後執行的擴充方法時的執行順序。 此範例會宣告三個字串的陣列。 接著,它會逐一查看 ConvertCollectionToUpperCase 所傳回的集合。

注意事項注意事項

下列範例使用 C# 的 yield return 建構函式。 在 Visual Basic 2008 中沒有同等的功能,因此,只有在 C# 中提供這個範例。

public static class LocalExtensions
{
    public static IEnumerable<string>
      ConvertCollectionToUpperCase(this IEnumerable<string> source)
    {
        foreach (string str in source)
        {
            Console.WriteLine("ToUpper: source {0}", str);
            yield return str.ToUpper();
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        string[] stringArray = { "abc", "def", "ghi" };

        var q = from str in stringArray.ConvertCollectionToUpperCase()
                select str;

        foreach (string str in q)
            Console.WriteLine("Main: str {0}", str);
    }
}

此範例會產生下列輸出:

ToUpper: source abc
Main: str ABC
ToUpper: source def
Main: str DEF
ToUpper: source ghi
Main: str GHI

請注意,逐一查看 ConvertCollectionToUpperCase 所傳回的集合時,會從來源字串陣列擷取每個項目,並在下一個項目從來源字串陣列擷取前,轉換為大寫。

您可以看到在所傳回之集合中的每個項目在 Main 的 foreach 迴圈中處理前,字串的整個陣列都沒有轉換為大寫。

後續步驟

本教學課程中的下一個主題說明將查詢鏈結在一起:

請參閱

概念

教學課程:將查詢鏈結在一起