2012-04-28 5 views
2

개체가 diceRolls 인 IEnumerable>이 있습니다. 데이터 세트는 {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 2}}IEnumerable 그룹화 <IEnumerable <int>>

나는를 얻을 필요가 같다 결과 집합은 공통 집합을 그룹화하고 해당 집합의 총 행 수를 합산합니다.

나는이 같은 GROUPBY 방법을 시도 :

var aggregate = sorted.GroupBy(rolls => rolls, rolls => rolls); 

을하지만 그룹 아무것도하지 않았다 나는 나의 유일한 선택은 전체 개체 자체였다 그룹화에 반대 롤의 내부에 필드를 찾을 수 있습니다. 어떻게해야합니까?

+0

일반적인 세트 2-4와 3-3 또는 2-4, 4-2가 같은 그룹이라는 것은 무엇을 의미합니까? – RichardOD

+0

동일한 숫자이므로 {1, 2} 및 {1, 2,}는 그룹이지만 {2, 4} 및 {3, 3}은 아닙니다. 나는 이미 결과를 정렬하여 {2, 1}을 가지지 않을 것이고, 나는 항상 {1,2}를 가질 것입니다. –

답변

0

GroupBy 사용자 정의 IEqualityComparer에 전달할 수 있습니다.이 사용자 정의 시퀀스는 같음 위협을 {1,2, 1}과 (와) 같이 그룹화합니다. 당신이 알고있는 경우에, 당신의 롤은 두 요소를 가지고 있다는 익명 유형과 같음 구현을 사용할 수있는 경우 :이 코드는 생성합니다

var sorted = new[] { new[] { 1, 2 }, new[] { 1, 2 }, new[] { 1, 3 }, new[] { 2, 2 } }; 
var grouped = sorted.GroupBy(roll => new { r0 = roll[0], r1 = roll[1] }); 
var backToArrays = grouped.Select(g => new[] { g.Key.r0, g.Key.r1 }); 

{{1, 2}, {1, 3}, {2, 2}}. 필요한게 있니?

+0

예, 2에서 20까지의 요소가 필요합니다. –

관련 문제