Share via


データ型の変換

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

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

メソッド

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

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

メソッド名

Description

C# のクエリ式の構文

Visual Basic のクエリ式の構文

詳細情報

AsEnumerable

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

該当なし

該当なし

Enumerable.AsEnumerable``1

AsQueryable

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

該当なし

該当なし

Queryable.AsQueryable

Cast

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

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

from string str in words

From … As …

Enumerable.Cast``1

Queryable.Cast``1

OfType

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

該当なし

該当なし

Enumerable.OfType``1

Queryable.OfType``1

ToArray

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

該当なし

該当なし

Enumerable.ToArray``1

ToDictionary

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

該当なし

該当なし

Enumerable.ToDictionary``2

ToList

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

該当なし

該当なし

Enumerable.ToList``1

ToLookup

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

該当なし

該当なし

Enumerable.ToLookup``2

クエリ式の構文の例

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

Class Plant
    Public Property Name As String 
End Class 

Class CarnivorousPlant
    Inherits Plant
    Public Property 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
    */
}

参照

処理手順

方法 : LINQ を使用して ArrayList を照会する

関連項目

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

From 句 (Visual Basic)

System.Linq

概念

標準クエリ演算子の概要

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