2013-06-06 2 views
3

에 따라 다시 설정 목록에 인덱스를 추가 목록 :객체 등을 감안할 때 ID 그룹

var indexList = list.Select((t, i) => new {t, index = i}).ToList(); 

foreach (var t in indexList) 
{ 
    Console.WriteLine("ID: " + t.t.Id + " ---- Index:" + t.index); 
} 

와 나는 같은 결과를 얻을 :

나는 많은 행운없이 GROUPBY와 함께 연주 해봤

ID: 1 ---- Index:0 
ID: 1 ---- Index:1 
ID: 2 ---- Index:0 
ID: 2 ---- Index:1 

: 내가 정말로 원하는 무엇 17,451,515,

ID: 1 ---- Index:0 
ID: 1 ---- Index:1 
ID: 2 ---- Index:2 
ID: 2 ---- Index:3 

내가이 같은 출력을 얻을 수 있도록 각 ID 그룹에 대한 인덱스를 재설정됩니다.

나를 올바른 방향으로 안내해 줄 수 있습니까?

감사

+0

당신이'사전 > '를 사용하여 반대하고 있습니까? –

답변

3

방법에 대해 :

var indexList = list 
    .GroupBy(item => item.Id) 
    .SelectMany(grp => grp 
     .Select((item, index) => new { index = index, t = item })) 
    .ToList(); 

예 :http://ideone.com/nSTa8A

+0

누구나 다운 보트에 대해 의견을 말합니까? 여기 뭔가 잘못 됐어? –

+0

+1 downvote가있는 이유는 알 수 없습니다.이 솔루션이 작동합니다. –

+0

+1 이것은 정확히 내가 원했던 것이며 완벽하게 작동합니다. 고맙습니다. – davy

0
var indexList = list.GroupBy(x=>x.Id) 
        .SelectMany(g => g.Select((t, i) => new {t, index = i}) 
        .ToList(); 
+2

이것은 당신에게 정확한 대답을주지 않을 것입니다. – Bunny

+0

@ 버니 예 각 그룹에 대해 선택해야합니다. –