データ型の変換

更新 : 2007 年 11 月

変換メソッドは、入力オブジェクトの型を変更します。

LINQ クエリの変換演算は、さまざまなアプリケーションで役立ちます。次にいくつかの例を示します。

メソッド

次の表は、データ型の変換を行う標準クエリ演算子メソッドの一覧です。

この表の変換メソッドのうち、名前の先頭に "As" が付くものは、ソース コレクションの静的な型を変更しますが、コレクションの列挙は行いません。名前の先頭に "To" が付くメソッドは、ソース コレクションを列挙し、それらの項目を対応するコレクション型に変換します。

メソッド名

説明

C# のクエリ式の構文

Visual Basic のクエリ式の構文

詳細情報

AsEnumerable

IEnumerable<T> として型指定された入力を返します。

適用できません。

適用できません。

Enumerable.AsEnumerable<TSource>

AsQueryable

IEnumerable (ジェネリック) を IQueryable (ジェネリック) に変換します。

適用できません。

適用できません。

Queryable.AsQueryable

Cast

コレクションの要素を指定された型にキャストします。

明示的に型指定された範囲変数を使用します。次に例を示します。

from string str in words

From … As …

Enumerable.Cast<TResult>

Queryable.Cast<TResult>

OfType

指定された型にキャストできるかどうかを基準として、値をフィルタ処理します。

適用できません。

適用できません。

Enumerable.OfType<TResult>

Queryable.OfType<TResult>

ToArray

コレクションを配列に変換します。このメソッドはクエリを強制実行します。

適用できません。

適用できません。

Enumerable.ToArray<TSource>

ToDictionary

キー セレクタ関数に基づき、要素を Dictionary<TKey, TValue> に変換します。このメソッドはクエリを強制実行します。

適用できません。

適用できません。

Enumerable.ToDictionary

ToList

コレクションを List<T> に変換します。このメソッドはクエリを強制実行します。

適用できません。

適用できません。

Enumerable.ToList<TSource>

ToLookup

キー セレクタ関数に基づき、要素を Lookup<TKey, TElement> (一対多のディクショナリ) に変換します。このメソッドはクエリを強制実行します。

適用できません。

適用できません。

Enumerable.ToLookup

クエリ式の構文の例

次のコード例では、明示的に型指定された範囲変数 (C#) または From As 句 (Visual Basic) を使用して、サブタイプでのみ使用できるメンバにアクセスする前に、型をそのサブタイプにキャストします。

Class Plant
    Public Name As String
End Class

Class CarnivorousPlant
    Inherits Plant
    Public TrapType As String
End Class

Sub Cast()

    Dim plants() As Plant = { _
        New CarnivorousPlant With {.Name = "Venus Fly Trap", .TrapType = "Snap Trap"}, _
        New CarnivorousPlant With {.Name = "Pitcher Plant", .TrapType = "Pitfall Trap"}, _
        New CarnivorousPlant With {.Name = "Sundew", .TrapType = "Flypaper Trap"}, _
        New CarnivorousPlant With {.Name = "Waterwheel Plant", .TrapType = "Snap Trap"}}

    Dim query = From plant As CarnivorousPlant In plants _
                Where plant.TrapType = "Snap Trap" _
                Select plant

    Dim sb As New System.Text.StringBuilder()
    For Each plant In query
        sb.AppendLine(plant.Name)
    Next

    ' Display the results.
    MsgBox(sb.ToString())

    ' This code produces the following output:

    ' Venus Fly Trap
    ' Waterwheel Plant

End Sub
class Plant
{
    public string Name { get; set; }
}

class CarnivorousPlant : Plant
{
    public string TrapType { get; set; }
}

static void Cast()
{
    Plant[] plants = new Plant[] {
        new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
        new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
        new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
        new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }
    };

    var query = from CarnivorousPlant cPlant in plants
                where cPlant.TrapType == "Snap Trap"
                select cPlant;

    foreach (Plant plant in query)
        Console.WriteLine(plant.Name);

    /* This code produces the following output:

        Venus Fly Trap
        Waterwheel Plant
    */
}

データ型の変換方法に関する詳細情報

Topic Location
方法 : LINQ を使用して ArrayList を照会する 統合言語クエリ (LINQ: Language-Integrated Query)
方法 : LINQ を使用して ArrayList を照会する dv_Linq
方法 : LINQ を使用して ArrayList を照会する dv_Linq

参照

概念

標準クエリ演算子の概要

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

参照

from 句 (C# リファレンス)

From 句 (Visual Basic)

System.Linq