2015-01-26 3 views
-1

나는 나열하고 각 그룹의 첫 번째 요소를 취할 그룹 수고유 IList의 선택 두 번째 요소

public IList<MyObject> Items 

IList의 수집을 가지고

Items.GroupBy(x => x.Type).Select(grp => grp.First()).ToList(); 

내가 어떻게 그 목록 및 그룹하지 첫째을 요소 (예 : second)?

답변

0

당신은 Enumerable.ElementAt을 사용할 수

var everySecond = Items.GroupBy(x => x.Type).Select(grp => grp.ElementAt(1)).ToList(); 

당신이 (참조 유형) 대신 null을 반환하는 ElementAtOrDefault을 사용할 수 있도록 많은 항목이없는 경우.

편집 : "내가 selectedItem가 있고 주요 요소로 그룹에 그것을 표시 할"그래서 실제로이 경우, 특정 조건과 일치하는 첫 번째 싶어

그것은이다 당신이 그룹을 주문하고 첫 번째를 취할 수 선택된 : 나는 OrderByDescending을 사용했다

var everySelected = Items 
    .GroupBy(x => x.Type) 
    .Select(grp => grp.OrderByDescending(x => x == selectedItem).First()) 
    .ToList(); 

비교하여 (진정한가 1이고 거짓이 0 고려). 이렇게하면 선택한 항목과 동일한 참조 인 모든 항목이 먼저 나타납니다 (참조 평등 대신 비교할 방법을 논리로 바꿉니다).

+0

하지만 그 요소의 색인을 모르겠습니다. 요소별로 선택할 수 있습니까? –

+0

@ArmenMkrtchyan :하지만 "예를 들어 두 번째"_와 같은 것을 원한다고 언급했습니다. "요소별로 선택"을 의미하는 것은 무엇입니까? –

+0

나는 selectedItem을 가지고 있으며 그것을 주 요소로 그룹에 표시하려고합니다. –