方法 : メソッドからクエリを返す (C# プログラミング ガイド)

更新 : 2007 年 11 月

この例では、メソッドからクエリを戻り値および out パラメータとして返す方法を示します。

クエリの型は、IEnumerableIEnumerable<T>、または IQueryable<T> のような派生型である必要があります。したがって、クエリを返すメソッドの戻り値または out パラメータの型も同じである必要があります。メソッドがクエリを具象型の List<T> または Array に実体化する場合は、クエリ自体ではなくクエリ結果を返すと見なされます。メソッドから返されたクエリ変数は、そのまま構成または変更できます。

メソッドに渡されるクエリを実行する方法の例については、「オブジェクト ダンパのサンプル」を参照してください。

使用例

次の例では、最初のメソッドはクエリを戻り値として返し、2 番目のメソッドはクエリを out パラメータとして返します。いずれにしても返されるのはクエリであり、クエリ結果ではないことに注意してください。

class MQ
{
    IEnumerable<string> QueryMethod1(ref int[] ints)
    {
        var intsToStrings = from i in ints
                            where i > 4
                            select i.ToString();
        return intsToStrings;
    }

    static void Main()
    {
        MQ app = new MQ();

        int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        var myQuery = app.QueryMethod1(ref nums);


        //execute myQuery
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        //modify myQuery
        myQuery = (from str in myQuery
                   orderby str descending
                   select str).
                  Take(3);

        // Executing myQuery after more
        // composition
        Console.WriteLine("After modification:");
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

コードのコンパイル方法

  • .NET Framework Version 3.5 を対象とする Visual Studio プロジェクトを作成します。既定では、プロジェクトには System.Core.dll への参照と System.Linq 名前空間に対する using ディレクティブが含まれます。

  • コードをプロジェクト内にコピーします。

  • F5 キーを押して、プログラムをコンパイルおよび実行します。

  • 任意のキーを押して、コンソール ウィンドウを終了します。

参照

概念

LINQ クエリ式 (C# プログラミング ガイド)