반응형
변환 연산자 Conversion Operators
LINQ 구문은 IEnumerable 인터페이스를 반환합니다. 하지만 코드를 작성하다보면 인터페이스가 아닌 구체화된 클래스가 필요할 때가 있습니다. 그 때 변환 연산자를 활용하여 Array, List, Dictionary 타입으로 변환할 수 있습니다.
주의사항 LINQ 구문은 Lazy 전략을 사용하여 코드가 정의되어 있는 구간에서 실행되지 않습니다. 그런데 변환 연산자를 사용하게 되면 바로 연산을 끝내기 때문에 연산이 많은 LINQ 구문은 성능에 영향을 미칠 수 있습니다.
ToArray
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
var sortedDoubles = from d in doubles
orderby d descending
select d;
var doublesArray = sortedDoubles.ToArray();
ToList
string[] words = { "cherry", "apple", "blueberry" };
var sortedWords = from w in words
orderby w
select w;
var wordList = sortedWords.ToList();
ToDictionary
var scoreRecords = new[] { new {Name = "Alice", Score = 50},
new {Name = "Bob" , Score = 40},
new {Name = "Cathy", Score = 45}
};
var scoreRecordsDict = scoreRecords.ToDictionary(sr => sr.Name);
OfType
OfType 은 numbers 배열의 모든 요소를 double 로 형변환합니다.
object[] numbers = { null, 1.0, "two", 3, "four", 5, "six", 7.0 };
var doubles = numbers.OfType<double>();
// doubles = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 };
반응형
'Develop > .NET 가이드' 카테고리의 다른 글
[C#] LINQ 사용방법 - Range, Repeat (0) | 2020.02.02 |
---|---|
[C#] LINQ 사용방법 - 요소 연산자 First, FirstOrDefault, ElementAt (0) | 2020.02.02 |
[C#] LINQ 사용방법 - 집합 연산자 Distinct, Union, Intersect, Except (0) | 2020.02.02 |
[C#] LINQ 사용방법 - 그룹 연산자 Group by into (0) | 2020.02.02 |
[C#] LINQ 사용방법 - 정렬 연산자 OrderBy, ThenBy, OrderByDescending, ThenByDescending (0) | 2020.02.01 |
꾸준히 노력하는 개발자 "김예건" 입니다.