메모리 목록에서 고유한 속성 값의 배열을 얻는 방법은 무엇입니까?
-
09-06-2019 - |
문제
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();
제휴하지 않습니다 StackOverflow