2010-06-01 6 views
1

개체 목록 (List)이 있습니다. 각 개체에는 해당 개체를 설명하는 문자열 목록 (List)이 들어 있습니다.LINQ가있는 가변 수의 목록 조합

개체 (카드)를 설명하는 데 사용 된 모든 고유 문자열을 포함하는 드롭 다운을 만들어야합니다. 이렇게하려면 사용 된 별개의 문자열 목록이 필요합니다.

LINQ로 어떻게 할 수 있습니까?

답변

2

SelectMany 확장 메서드/연산자를 사용하면 컬렉션을 개별 요소로 병합 할 수 있습니다.

listOfObjects.SelectMany(x => x.DescriptionStrings).Distinct() 

이렇게하면 개체 목록의 각 개체에 대한 설명 문자열 모음에서 모든 문자열을 선택합니다.

0

LINQ는 Distinct 기능을 가지고 있습니다. "_cards을"가정

는 목록의 인스턴스 변수로 존재하고 Card.Descriptions는 설명 (윈폼에서)와 "cardsComboBox"를 반환 :

cardsComboBox.AutoCompleteSource = _cards.SelectMany(c => c.Descriptions).Distinct(); 

즉 상기 카드 설명의 목록이 될 것이라는 알림 바인딩의 시간 그러나. _cards가 업데이트 될 때 동기화 상태를 유지하려면 좀 더 멋진 발놀림이나 반응성 바인딩 소스를 봐야합니다. (Bindable.Linq를 사용)

관련 문제