2012-11-28 2 views
0

에 고유 한 값을 기준으로 목록의 서브 순서를 선택하려면 어떻게 클래스와 같은 그것의 목록을 가지고있다. 모든 FirstNameLastName이 다른 사람의 하위 시퀀스를 선택하고 싶습니다. 내 기본 키 (관계형 데이터베이스 비전에서)는 FirstName + LastName입니다.는 속성

목록을 반복하여이 작업을 수행 할 수 있음을 알고 있습니다. 하지만 LINQ 솔루션을 요청하고 있습니다. 거기 아무도 없나요? 지정된 하위 시퀀스를 LINQ까지 선택할 수 있습니까? 어떤 아이디어라도 제발?

+0

당신은'PersonComparer' 클래스에서''IEqualityComparer 을 구현할 수는와'LINQ에 고유 PersonComparer''의 개체를 전달 '메소드를 호출합니다. –

답변

1

Lookup<TKey, TElement> ClassFirstName+LastName 키를 기반으로 작성하고 (당신은 아무것도 말한 적으로는 RDER 또는 무언가의에 대해 즉시) Enumerable.ToLookup MethodEnumerable.Select Method를 통해 각 하위 컬렉션에서 첫 번째 걸릴 :

var result = persons.ToLookup(p => string.Concat(p.FirstName, p.LastName)) 
        .Select(l => l.First()); 
+0

그건 정확히 내가 원하는 것입니다. 미리 감사드립니다 –

1

에만 독특한 사람을 원한다 ? 그런 다음, 각 그룹 계산, Enumerable.GroupBy을 사용할 수 있습니다 : 여기

var uniquePersons = persons 
        .GroupBy(p => new { p.FirstName, p.LastName }) 
        .Where(g => g.Count() == 1) 
        .Select(g => g.First()); 

을 데모입니다 : http://ideone.com/nsbyyI

+0

도움을 주셔서 감사합니다. 사실 나는 그들 중 하나만 성, 성이 같은 사람 중에서 선택하고 싶습니다. 나는 그 사람이 더 많이 발생하는 사람을 지우고 각각 하나만 지켜야한다는 뜻입니다. (내 영어가 너무 안좋아. (미안) –

+0

+1 : 나는 내 질문보다 훨씬 더 질색한다. – horgh