문제

Foo 목록이 있습니다.

Foo에는 Bar라는 문자열 속성이 있습니다.

나는 사용하고 싶습니다 링크 문자열[]을 얻으려면 별개의 Foo 목록의 Foo.Bar 값입니다.

어떻게 해야 하나요?

도움이 되었습니까?

해결책

나는 람다로 갈 것이다 ...훨씬 더 좋아

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

@lassevk가 게시한 것과 동일하게 작동합니다.

또한 마지막 순간까지 배열로 변환하지 않기를 원할 수도 있다는 점을 덧붙이고 싶습니다.

LINQ는 배후에서 몇 가지 최적화를 수행하며 쿼리는 명시적으로 필요할 때까지 쿼리 형식을 유지합니다.따라서 가능한 모든 최적화가 모두 적용되도록 먼저 쿼리에 필요한 모든 것을 구축할 수 있습니다.

평가란 "Count()" 또는 "ToArray()" 등과 같이 명시적으로 평가가 필요한 항목을 요청하는 것을 의미합니다.

다른 팁

유창한 패턴을 사용하려는 경우 작동합니다.

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();

이 시도:

var distinctFooBars = (from foo in foos
                       select foo.Bar).Distinct().ToArray();

다음과 같은 일을 할 수 없어야합니까?

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top