LINQクエリの結果を特定の型に変換する方法


LINQ(Language Integrated Query)を使用してデータをクエリする場合、結果は通常、匿名型として返されます。しかし、特定の型に結果を変換する必要がある場合もあります。以下に、LINQクエリの結果を特定の型に変換するいくつかの方法を示します。

  1. クエリ結果を型変換する方法: LINQクエリの実行結果を特定の型に変換するには、Cast<T>()メソッドまたはOfType<T>()メソッドを使用します。Cast<T>()メソッドは、クエリの結果を指定した型にキャストしますが、キャストが失敗した場合はInvalidCastExceptionがスローされます。一方、OfType<T>()メソッドは、指定した型にキャストできない要素を無視します。

    var queryResult = from item in collection
                     select item;
    // Cast<T>()メソッドを使用して結果を型変換する例
    var typedResult = queryResult.Cast<DesiredType>();
    // OfType<T>()メソッドを使用して結果を型変換する例
    var typedResult = queryResult.OfType<DesiredType>();
  2. クエリ結果を新しい型にマップする方法: クエリ結果を新しい型にマップするには、Select()メソッドを使用して匿名型を作成するか、自分で新しい型を定義します。

    var queryResult = from item in collection
                     select new
                     {
                         Property1 = item.Property1,
                         Property2 = item.Property2
                     };
    // 匿名型を新しい型に変換する例
    var typedResult = queryResult.Select(x => new DesiredType
                       {
                           Property1 = x.Property1,
                           Property2 = x.Property2
                       });
    // 自分で新しい型を定義して結果をマップする例
    var typedResult = queryResult.Select(x => new DesiredType
                       {
                           Property1 = x.Property1,
                           Property2 = x.Property2
                       });
  3. クエリ結果をキャストする方法: クエリ結果が特定の型のコレクションである場合、ToList()メソッドやToArray()メソッドを使用して、結果を特定の型のリストや配列にキャストすることができます。

    var queryResult = from item in collection
                     select item;
    // List<T>にキャストする例
    var typedList = queryResult.ToList();
    // T[]にキャストする例
    var typedArray = queryResult.ToArray();

これらの方法を使って、LINQクエリの結果を特定の型に変換することができます。適切な方法は、使用するデータの形式や要件によって異なる場合があります。