方法 : クエリで要素のプロパティのサブセットを返す (C# プログラミング ガイド)

更新 : 2007 年 11 月

次の条件が両方とも該当する場合、クエリ式で匿名型を使用します。

  • 各ソース要素のプロパティの一部のみを返す必要がある。

  • クエリが実行されるメソッドのスコープの外側にクエリ結果を保存する必要がない。

各ソース要素から 1 つのプロパティまたはフィールドのみを返す必要がある場合、select 句でドット演算子を使用するだけでこれを行うことができます。たとえば、各 student の ID のみを返すには、次のように select 句を記述します。

select student.ID;

使用例

次の例に、匿名型を使用して、指定した条件に一致する各ソース要素のプロパティのサブセットのみを返す方法を示します。

private static void QueryByScore()
{
    // Create the query. var is required because
    // the query produces a sequence of anonymous types.
    var queryHighScores =
        from student in students
        where student.ExamScores[0] > 95
        select new { student.FirstName, student.LastName };

    // Execute the query.
    foreach (var obj in queryHighScores)
    {
        // The anonymous type's properties were not named. Therefore 
        // they have the same names as the Student properties.
        Console.WriteLine(obj.FirstName + ", " + obj.LastName);
    }
}
/* Output:
Adams, Terry
Fakhouri, Fadi
Garcia, Cesar
Omelchenko, Svetlana
Zabokritski, Eugene
*/

名前が指定されていない場合、匿名型では、そのプロパティのソース要素の名前が使用されることに注意してください。匿名型のプロパティに新しい名前を指定するには、次のように select ステートメントを記述します。

select new { First = student.FirstName, Last = student.LastName };

前の例でこれを行う場合、Console.WriteLine ステートメントも変更する必要があります。

Console.WriteLine(student.First + " " + student.Last);

コードのコンパイル方法

  • このコードを実行するには、Visual Studio で作成した Visual C# コンソール アプリケーション プロジェクトに、クラスをコピーして貼り付けます。既定では、このプロジェクトは、.NET Framework Version 3.5 を対象としており、System.Core.dll への参照と System.Linq の using ディレクティブが含まれます。これらの要件が 1 つ以上プロジェクトから欠落していても、手動で追加できます。詳細については、「方法 : LINQ プロジェクトを作成する」を参照してください。

参照

概念

C# プログラミング ガイド

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

参照

匿名型 (C# プログラミング ガイド)