2012-07-11 3 views
1

속성별로 중복 된 개체 목록이 있습니다. 나는 모든 비 복제품을 얻고 싶다. 또한 조건에 따라 복제물 1 장을 얻고 싶다.상태가 다른 요소를 필터링하십시오.

예 :

목록 :

  1. 코드 : 1 학년 : 10
  2. 코드 : 1 학년 : 20
  3. 코드 : 2 학년 : 1

예상 목록 :

  1. 코드 : 1, 등급 : 20
  2. 코드 : 2 학년 : 1

조건은, 중복 요소의 일 최고 Grade로 하나를 잡아 것입니다. 어떻게이 람다 또는 linq 표현을 쓸까요?

답변

5

당신은이 작업을 수행 할 GroupBy를 사용할 수 있습니다

var results = items.GroupBy(item => item.Code) 
        .Select(g => g.OrderByDescending(i => i.Grade) 
        .First()); 
0

내가 먼저 GroupByCode 속성은 다음

0

뭔가

list.GroupBy(item=>item.Code).Select(item=>new {code = item.Key, grade = item.Max(i=>i.Grade)}).ToList(); 
같은 그룹에있는 각 요소의 Max를 선택하도록 제안
관련 문제