2014-05-12 3 views
0

배열의 비슷한 항목을 새로운 배열로 그룹화하려고합니다. 지금까지 아무 행운, 아무도 도울 수 있습니까?유사한 항목을 배열로 그룹화하기

int[] items = { T1, T4, T6, T1, T4, T20, T6 }; 

다음과 같이 그룹화하고 싶습니다.

int[] One = { T1, T1 }; 
int[] two = { T6, T6 }; 
int[] three = { T20 }; 
int[] four = { T4, T4 }; 

지금까지 나는 다음 시도,하지만 난 배열 (하나, 둘 등) 내가 할

int[] one = items.Where(com => com == 8).ToArray(); 

결과는에 null 값을 얻을;

one {int[0]} 

미리 감사드립니다.

+0

배열의 IEnumerable을 얻거나 각 배열 이름을 "one", "two"로 만들고 이전 배열에서 목록을 가져올 수 있습니다. 어느 쪽이 원하는거야? – CharlesNRice

+0

예상되는 결과가 명확하지 않습니다. * 변수 이름 *으로 그룹화 하시겠습니까? 변수의 가치가 아닌가? –

+0

@CharlesNRice 각 배열 이름 (1, 2)은 상수이므로 작성할 수 있습니다. 그룹화 부분에서 나는 단서가 없다. – megazoid

답변

3

동등성을 기준으로 항목을 그룹화 한 다음 그룹 항목이 포함 된 각 그룹에 대해 배열을 만듭니다.

var groups = items.GroupBy(x => x).Select(x => x.ToArray()); 

이 쿼리는 당신에게이 경우의 int 네 배열을 포함하는 IEnumerable<int[]>을 제공 qill. 과 같은 색인을 통해 요소에 액세스하려면 ToArray 또는 ToListSelect 뒤에 사용할 수 있습니다.

+0

이 경우 선택이 필요합니까? 그냥 items.GroupBy (x => x)가 반환하겠습니까? – cost

+0

IEnumerable >을 반환합니다. OP가 IEnumrable을 원합니다.

+0

맞습니다. 당신은 그 대답을 지적해야합니다. – cost