데이터 형식 변환(C#)
변환 메서드는 입력 개체의 형식을 변경합니다.
Important
이 샘플은 System.Collections.Generic.IEnumerable<T> 데이터 원본을 사용합니다. System.Linq.IQueryProvider 기반 데이터 원본은 System.Linq.IQueryable<T> 데이터 원본과 식 트리를 사용합니다. 식 트리에는 허용되는 C# 구문에 대한 제한 사항이 있습니다. 또한 EF Core와 같은 각 IQueryProvider
데이터 원본에는 더 많은 제한이 적용될 수 있습니다. 데이터 원본에 대한 설명서를 확인합니다.
LINQ 쿼리의 변환 작업은 다양한 애플리케이션에서 유용합니다. 다음은 몇 가지 예제입니다.
- Enumerable.AsEnumerable 메서드는 표준 쿼리 연산자의 형식 사용자 지정 구현을 숨기는 데 사용될 수 있습니다.
- Enumerable.OfType 메서드는 LINQ 쿼리에 대해 매개 변수가 없는 컬렉션을 사용하도록 설정하는 데 사용될 수 있습니다.
- Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToList, Enumerable.ToLookup 메서드는 쿼리가 열거될 때까지 연기하는 대신 강제로 쿼리를 즉시 실행하는 데 사용될 수 있습니다.
메서드
다음 표에는 데이터-형식 변환을 수행하는 표준 쿼리 연산자 메서드가 나와 있습니다.
이 표에서 이름이 "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);
}
참고 항목
.NET