컬렉션에 새 속성을 추가하기 위한 LINQ
마스터하기
C#에서 컬렉션을 다루는 개발자라면, 데이터 표현을 개선하기 위해 컬렉션을 조작하고 정제해야 하는 상황에 직면할 수 있습니다. 일반적인 도전 과제는 객체 컬렉션에 새로운 속성을 원활하게 추가하는 것입니다. 다행히도 LINQ
(Language Integrated Query)는 이 작업을 쉽고 효율적으로 만들어줍니다. 이 블로그 포스트에서는 LINQ
를 사용하여 컬렉션을 매핑하고 새 속성을 추가하는 방법을 살펴보겠습니다.
도전 이해하기
문제
여러 기존 속성을 가진 객체의 컬렉션이 있다고 가정해 보세요. 원본 데이터의 무결성을 유지하면서 추가 속성을 추가해야 합니다. 각 객체에 대해 수작업으로 이를 수행하는 것은 시간 소모적이고 오류가 발생하기 쉽지만, LINQ
는 이 과정을 단순화할 수 있는 강력한 구문을 제공합니다. 이 구문을 통해 효율적이고 간결하게 이 작업을 수행할 수 있습니다.
해결책: LINQ를 사용하여 새 속성 추가하기
이 문제를 해결하려면 LINQ
의 간단하면서도 효과적인 쿼리 구문을 사용할 수 있습니다. 아래에서 우리는 단계별로 해결책을 분해하여 설명하겠습니다.
기본 구문
다음은 사용할 LINQ
문장의 높은 수준 개요입니다:
var a = from i in ObjectCollection select new { i.prop1, i.prop2, i.prop3, ..., newprop = newProperty };
이 문장에서 우리는 다음을 달성합니다:
- From 절: 이 절은 우리가 쿼리하고 있는 컬렉션
ObjectCollection
을 지정하는 데 사용됩니다. - Select 절: 여기서 우리는 새 컬렉션에 포함할 속성을 정의합니다. 기존 속성(
i.prop1
,i.prop2
,i.prop3
등)과 함께 새 속성(newprop
)을 포함할 수 있으며, 이 속성은newProperty
의 값으로 할당됩니다.
더 자세히 나눠보기
- 컬렉션 식별하기: 프로젝트에서 정의된 객체의 컬렉션을 가지고 있는지 확인합니다. 이는 배열, 리스트 또는 기타 열거 가능한 컬렉션일 수 있습니다.
- 기존 속성 결정하기: 각 객체에서 유지할 속성을 식별합니다.
- 새 속성 정의하기: 새 속성의 이름과 값이 무엇일지 결정합니다.
- LINQ 쿼리 구성하기: 위에서 제공한
LINQ
구문을 사용하여 새 속성을 추가하여 기존 컬렉션을 변환합니다.
예제 사용 사례
Name
, Age
, City
속성이 있는 Person
객체의 목록이 있다고 가정해 보겠습니다. 이제 사람의 나이가 18세 이상인지 확인하는 IsAdult
라는 새 속성을 추가하고 싶습니다:
var people = new List<Person> {
new Person { Name = "Alice", Age = 30, City = "New York" },
new Person { Name = "Bob", Age = 15, City = "Los Angeles" }
};
var modifiedPeople = from person in people
select new {
person.Name,
person.Age,
person.City,
IsAdult = person.Age >= 18
};
이 예에서:
- 우리는 각 개인에 대한 새로운 익명 객체를 만들었습니다.
- 기존 속성(
Name
,Age
,City
)과 나이에 기반하여 사람이 성인인지 나타내는 새 속성(IsAdult
)을 포함했습니다.
결론
컬렉션을 매핑하고 새 속성을 추가하기 위해 LINQ
를 활용하면 데이터 조작 작업을 간소화할 수 있습니다. 이 강력한 기능은 시간을 절약할 뿐만 아니라 코드의 가독성과 유지 관리성을 향상시킵니다. LINQ
쿼리의 구문과 구조를 마스터함으로써 복잡한 데이터 변환을 쉽게 수행할 수 있습니다.
C#에서 LINQ
를 사용하여 컬렉션을 효과적으로 다루는 방법을 이제 이해하셨으니, 더 깨끗하고 효율적인 코드를 작성하는 데 한 걸음 더 나아가셨습니다!