データ型の変換 (C#)

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

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

メソッド

次の表には、データ型の変換を実行する標準クエリ演算子メソッドの一覧が示されています。

名前が "As" で始まるこの表の変換メソッドは、ソース コレクションの静的型を変更しますが、ソース コレクションを列挙しません。 名前が "To" で始まるメソッドは、ソース コレクションを列挙し、各項目を対応するコレクション型に変換します。

メソッド名 説明 C# のクエリ式の構文 説明
AsEnumerable IEnumerable<T> として型指定された入力を返します。 該当なし。 Enumerable.AsEnumerable
AsQueryable (ジェネリック) IEnumerable を (ジェネリック) IQueryable に変換します。 該当なし。 Queryable.AsQueryable
Cast コレクションの要素を指定した型にキャストします。 明示的に型指定された範囲変数を使用します。 次に例を示します。

from string str in words
Enumerable.Cast

Queryable.Cast
OfType 指定した型にキャストできるかどうかに応じて値をフィルター処理します。 該当なし。 Enumerable.OfType

Queryable.OfType
ToArray コレクションを配列に変換します。 このメソッドはクエリの実行を強制します。 該当なし。 Enumerable.ToArray
ToDictionary キー セレクター関数に基づいて、Dictionary<TKey,TValue> に要素を変換します。 このメソッドはクエリの実行を強制します。 該当なし。 Enumerable.ToDictionary
ToList コレクションを List<T> に変換します。 このメソッドはクエリの実行を強制します。 該当なし。 Enumerable.ToList
ToLookup キー セレクター関数に基づいて、Lookup<TKey,TElement> (一対多の辞書) に要素を変換します。 このメソッドはクエリの実行を強制します。 該当なし。 Enumerable.ToLookup

この記事の次の例では、この分野の一般的なデータ ソースが使用されています。

public enum GradeLevel
{
    FirstYear = 1,
    SecondYear,
    ThirdYear,
    FourthYear
};

public class Student
{
    public required string FirstName { get; init; }
    public required string LastName { get; init; }
    public required int ID { get; init; }

    public required GradeLevel Year { get; init; }
    public required List<int> Scores { get; init; }

    public required int DepartmentID { get; init; }
}

public class Teacher
{
    public required string First { get; init; }
    public required string Last { get; init; }
    public required int ID { get; init; }
    public required string City { get; init; }
}
public class Department
{
    public required string Name { get; init; }
    public int ID { get; init; }

    public required int TeacherID { get; init; }
}

Student は、学年、主要学科、一連のスコアを持っています。 Teacher は、その教師が授業を受け持つキャンパスを示す City プロパティも持っています。 Department には名称と、学科長を務める Teacher への参照があります。

クエリ式の構文例

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

IEnumerable people = students;

var query = from Student student in students
            where student.Year == GradeLevel.ThirdYear
            select student;

foreach (Student student in query)
{
    Console.WriteLine(student.FirstName);
}

次の例に示すように、同等のクエリはメソッド構文を使用して表現できます。

IEnumerable people = students;

var query = people
    .Cast<Student>()
    .Where(student => student.Year == GradeLevel.ThirdYear);

foreach (Student student in query)
{
    Console.WriteLine(student.FirstName);
}

関連項目