2016-12-07 2 views
0

속성 (dni, 이름, 성, Adate (dd/mm/yyyy))을 가진 Person 클래스가 있습니다. 사람 목록에 중복 항목이 채워집니다.중복 목록 제거에 linq을 사용하는 필터 목록

var x = ListFamily.GroupBy(p => p.dni).OrderByDescending(t => t.Adate) 
          .FirstOrDefault(); 

하지만 t.Adate는

var y = ListFamily.OrderBy(z => z.Adate).First(); 

를 인식하지 않고이 복귀 하나의 가족 개체 :

12345   Jhon  scofield  7/10/2015 
24627   Liz  Pereira  7/06/2014 
32313   Brian  O'conner  12/06/2012 
12345   Jhon  scofield  7/10/2016 
32313   Brian  O'conner  12/06/2015 

는 내가하려고합니다.

linq (람다 식) 목록에서 최신 날짜를 사용하여 중복 된 사람을 제거하는 방법은 무엇입니까? 내 말 , 내가 중복 DNIS없이 목록을 반환하고 싶은 당신은 가장 높은 날짜와 OrderByDescensing를 사용하여 함께 레코드를 선택하기 위해 각 그룹에 대한 그룹화 행을 투영하기 위해 필요한이

24627   Liz  Pereira  7/06/2014 
12345   Jhon  scofield  7/10/2016 
32313   Brian  O'conner  12/06/2015 
+1

이 시도를 : 도움이 될 수 http://stackoverflow.com/questions/1606679/remove-duplicates-in-the-list-using-linq –

답변

2

같은 최신 날짜 가진 사람을 보여 GroupBySelect 좋아 :

var x = ListFamily.GroupBy(p => p.dni) 
        .Select(g=>g.OrderByDescending(x=>x.Adate) 
           .FirstOrDefault() 
         ); 
+0

Ehsan 감사합니다! 굉장 해요!. – Makito

1

당신은이 작업을 수행 할 수 있습니다 :

var result= ListFamily.GroupBy(p => p.dni) 
         .Select(g=>g.OrderDescending(p=>p.Adate).FirstOrDefault()); 

당신은 태어나 셨 d를 선택하여 각 그룹을 내림차순으로 정렬하여 최신 그룹을 선택합니다.

0

을 각 그룹에 대한 최신 날짜 항목을 선택해야합니다 있도록, 그룹의 열거를 얻을 수 GroupBy :

ListFamily.GroupBy(p => p.dni, (_, g) => g.OrderByDescending(x => x.Adate).FirstOrDefault());