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


133

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

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방법 이 없습니다 (이것은 내가 사용했을 것입니다).

답변:


278

당신이 찾고있는

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

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

using System.Linq

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


저도 그렇게 생각했습니다. 그러나 Select는 인텔리전스에 나타나지 않습니다.
Vaccano

GAAAAAAA! linq include가 누락되었습니다!
Vaccano

1
System.Data.Linq를 사용하여 사용해야합니다. 그런 다음 BrokenGlass 답변
Rami Shareef

1
나는 바보입니다! 아 잘 내가 알아낼 수 있도록 도와주는 무료 담당자.
Vaccano

환상적인 솔루션. 내 Object-List에서 문자열 "id"에 액세스하고 싶었습니다. 완벽하게 일함 List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box

19

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

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

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

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



6

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

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

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


.NET 2.0 군중을 게시 해 주셔서 감사합니다!
webworm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.