다음을 통해 공유


데이터 형식 변환(C#)

변환 메서드는 입력 개체의 형식을 변경합니다.

Important

이 샘플은 System.Collections.Generic.IEnumerable<T> 데이터 원본을 사용합니다. System.Linq.IQueryProvider 기반 데이터 원본은 System.Linq.IQueryable<T> 데이터 원본과 식 트리를 사용합니다. 식 트리에는 허용되는 C# 구문에 대한 제한 사항이 있습니다. 또한 EF Core와 같은 각 IQueryProvider 데이터 원본에는 더 많은 제한이 적용될 수 있습니다. 데이터 원본에 대한 설명서를 확인합니다.

LINQ 쿼리의 변환 작업은 다양한 애플리케이션에서 유용합니다. 다음은 몇 가지 예제입니다.

메서드

다음 표에는 데이터-형식 변환을 수행하는 표준 쿼리 연산자 메서드가 나와 있습니다.

이 표에서 이름이 "As"로 시작하는 변환 메서드는 소스 컬렉션의 정적 형식을 변경하지만 열거하지는 않습니다. 이름이 "To"로 시작하는 메서드는 소스 컬렉션을 열거하고 항목을 해당하는 컬렉션 형식에 삽입합니다.

메서드 이름 설명 C# 쿼리 식 구문 추가 정보
AsEnumerable IEnumerable<T>로 형식화된 입력을 반환합니다. 해당 없음. Enumerable.AsEnumerable
AsQueryable (제네릭) IEnumerable을 (제네릭) IQueryable로 변환합니다. 해당 없음. Queryable.AsQueryable
캐스트 컬렉션의 요소를 지정된 형식으로 캐스트합니다. 명시적 형식 범위 변수를 사용합니다. 예시:

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

참고 항목

이 문서의 다음 예제에서는 이 영역에 대한 공통 데이터 원본을 사용합니다.
Student에는 학년 수준, 기본 부서 및 일련의 점수가 있습니다. Teacher에는 교사가 수업을 진행하는 캠퍼스를 식별하는 City 속성도 있습니다. Department에는 이름이 있고 부서장 역할을 하는 Teacher에 대한 참조가 있습니다.
원본 리포지토리에서 예제 데이터 집합을 찾을 수 있습니다.

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; }
}

쿼리 식 구문 예제

다음 코드 예제에서는 명시적 형식 범위 변수를 사용하여 하위 형식에서만 사용할 수 있는 멤버에 액세스하기 전에 형식을 하위 형식으로 캐스트합니다.

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);
}

참고 항목