[C#] 객체 목록을 객체 속성 중 하나의 배열로 변환

다음 수업이 있다고 가정 해보십시오.

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

그런 다음 다음 클래스 목록을 만듭니다 ( List<ConfigItemType> MyList)

이제 다음과 같은 서명이있는 방법이 있습니다.

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

어떻게 들어갈 수있는 MyList받는 사람에서 listGoesHere의 값을 사용하여 ConfigItemType.Nameparams 객체를 파라미터로 문자열 배열로?

Linq가 이것을 할 수 있다고 확신합니다 ….하지만 그것에 MyList대한 select방법 이 없습니다 (이것은 내가 사용했을 것입니다).



답변

당신이 찾고있는

MyList.Select(x=>x.Name).ToArray();

Select확장 방법 이므로 확장명을 추가하여 해당 네임 스페이스를 추가해야합니다.

using System.Linq

파일에-Intellisense와 함께 표시됩니다.


답변

Linq 가이 작업을 수행 할 수 있다고 확신하지만 MyList에는 선택 방법이 없습니다 (이것은 내가 사용했을 것입니다).

예, LINQ가이를 수행 할 수 있습니다. 간단합니다 :

MyList.Select(x => x.Name).ToArray();

문제는에 대한 참조 System.Core가 없거나에 대한 using지시문 이 누락 된 것 입니다 System.Linq.


답변

이것은 또한 작동해야합니다 :

AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())


답변

나와 같이 .NET 2.0을 사용하는 모든 사람들을 위해 다음과 같은 방법으로 시도하십시오 (OP의 예에 해당).

ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci)
{
   return ci.Name;
}).ToArray();

여기서 ConfigItemList 는 목록 변수입니다.


답변