2014-02-12 3 views
0

쉽게 알 수 있겠지만 어떻게해야 할 지 모르겠습니다.두 개의 서로 다른 목록에서 그룹 만들기

나는 내가 LINQ와 함께 다음과 같은 두 개의 완전한 목록에서 그룹을 만들고 싶은 사람

List<Person> specificPersons 
List<Person> allPersons 

의 두 개의리스트가 있습니다.

IEnumerable<IGrouping<string, Person>> personsGroups 

문자열은 맞춤 문자열입니다. 나는이리스트를 사용하여 IEnumerable에 바인딩 인 CollectionViewSource을 사용하는 Windows 8.1 Metro Application에서 ListView의 그룹 헤더로 구분 된 목록을 표시합니다.

+0

사람들의 그룹을 기준으로 어떤 기준으로 그룹화 하시겠습니까? – mayabelle

+0

각 목록에는 그룹이 있어야합니다. 어쩌면 이것이 내가 어떻게 작동하는지 실제로 이해하지 못하는 요점 일 것입니다. 각 목록은 그룹이 될 것이므로 그룹을 만드는 다른 기준은 없습니다. – sust86

답변

1

당신은 같은 것을 할 수 있습니다

var query = 
    specificPersons.Select(p => new { Header = headerSpecific, p}) 
    .Union(
    allPersons.Select(p => new { Header = headerAll, p})); 
:

string headerSpecific = "Specific"; 
string headerAll = "All"; 

var query = 
    specificPersons.GroupBy(_ => headerSpecific) 
    .Union(
    allPersons.GroupBy(_ => headerAll)); 

참고 비슷한 기능을 수행하는 다른 방법이있는 그룹 대신 익명 형식을 사용하여 예를 들어, (질문의 요구 사항과 일치하지 않지만)

+0

이것은 내가 찾고있는 것처럼 보입니다. 잠시 후에 테스트 해 보겠습니다. 익명 형식의 두 번째 솔루션 - 반환되는 형식은 무엇입니까? – sust86

+0

'string' 타입의'Header' 속성과'Person' 타입의'i' 속성을 포함하는 익명 타입에 대한'IEnumerable' – jnovo

0

각 목록에 간단한 루프를 통해 설정할 수있는 그룹 속성을 Person에 추가하는 것이 좋습니다. 그럼 당신은 이것을 할 수 있습니다 :

사람이 도메인 엔터티 및/또는 데이터베이스에 존재하는 경우에는 의미가 없습니다. 이 그룹은 표시 용이므로보기 모델 (예 : PersonViewModel)을 사용하고 도메인 모델을 변경하지 않으려면 그룹 속성을 해당 모델에 추가하십시오.

관련 문제