2009-10-19 2 views
3

이것은 불가능하거나 너무 분명해서 계속 지나칠 수 있습니다.Count로 그룹화가 가능합니까?

나는 개체의 목록을 가지고 (의이 예를 들어 int 치의을 가정 해 봅시다) :

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6 }; 

나는 새를 반환 주문 전혀 관련 또는 기타 비교와 쌍으로 그룹 수 있도록하고 싶습니다 IGrouping 개체.

즉,

내가 잘못 각도에서이 문제에 접근 할 수있는 매우 현실적인 가능성이있다
list.GroupBy(i => someLogicToProductPairs); 

그러나, 목표는 그룹에 일정 용량에 의해 개체의 집합입니다. 어떤 도움이라도 대단히 감사합니다.

+0

결과는 무엇입니까? {1}이 (가)있는 그룹, (2)가 그룹에 속해 있습니까? –

+0

그룹화는 한 쌍, 즉 {1,2}, {3,4} 등이 될 것입니다. –

답변

5

당신은 다음과 같은 의미합니까 :

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6 }; 

IEnumerable<IGrouping<int,int>> groups = 
    list 
    .Select((n, i) => new { Group = i/2, Value = n }) 
    .GroupBy(g => g.Group, g => g.Value); 

foreach (IGrouping<int, int> group in groups) { 
    Console.WriteLine(String.Join(", ", group.Select(n=>n.ToString()).ToArray())); 
} 

출력

1, 2 
3, 4 
5, 6 
이 같은 뭔가를 할 수
+1

작은 녀석이 가끔씩 얻게 할 수는 없습니다. D –

1

...

List<int> integers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 

var p = integers.Select((x, index) => new { Num = index/2, Val = x }) 
       .GroupBy(y => y.Num); 
0
int counter = 0; 
    // this function returns the keys for our groups. 
    Func<int> keyGenerator = 
    () => 
     { 
     int keyValue = counter/2; 
     counter += 1; 
     return keyValue; 
     }; 

    var groups = list.GroupBy(i => {return keyGenerator()});