using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
List<TestItem> list = new List<TestItem>();
list.Add( new TestItem { Id = 1, Field1 = 1});
list.Add( new TestItem { Id = 1, Field1 = 2});
list.Add( new TestItem { Id = 2, Field1 = 3});
list.Add( new TestItem { Id = 2, Field1 = 4});
var indexList = list
.GroupBy(item => item.Id)
.SelectMany(grp => grp
.Select((t, index) => new { index = index, t }));
foreach (var t in indexList)
{
Console.WriteLine("ID: " + t.t.Id + " ---- Index:" + t.index);
}
}
}
public class TestItem
{
public int Id { get; set;}
public int Field1 { get; set; }
public int Field2 { get; set; }
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgTGlzdDxUZXN0SXRlbT4gbGlzdCA9IG5ldyBMaXN0PFRlc3RJdGVtPigpOwogICAgICAgIGxpc3QuQWRkKCBuZXcgVGVzdEl0ZW0geyBJZCA9IDEsIEZpZWxkMSA9IDF9KTsKICAgICAgICBsaXN0LkFkZCggbmV3IFRlc3RJdGVtIHsgSWQgPSAxLCBGaWVsZDEgPSAyfSk7CiAgICAgICAgbGlzdC5BZGQoIG5ldyBUZXN0SXRlbSB7IElkID0gMiwgRmllbGQxID0gM30pOwogICAgICAgIGxpc3QuQWRkKCBuZXcgVGVzdEl0ZW0geyBJZCA9IDIsIEZpZWxkMSA9IDR9KTsKICAgIAogICAgICAgIHZhciBpbmRleExpc3QgPSBsaXN0CiAgICAgICAgICAgIC5Hcm91cEJ5KGl0ZW0gPT4gaXRlbS5JZCkKICAgICAgICAgICAgLlNlbGVjdE1hbnkoZ3JwID0+IGdycAogICAgICAgICAgICAgICAgLlNlbGVjdCgodCwgaW5kZXgpID0+IG5ldyB7IGluZGV4ID0gaW5kZXgsIHQgfSkpOwogICAgCiAgICAKICAgICAgICBmb3JlYWNoICh2YXIgdCBpbiBpbmRleExpc3QpCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiSUQ6ICIgKyB0LnQuSWQgKyAiIC0tLS0gSW5kZXg6IiArIHQuaW5kZXgpOwogICAgICAgIH0JCQoJfQp9CgpwdWJsaWMgY2xhc3MgVGVzdEl0ZW0KewogICBwdWJsaWMgaW50IElkIHsgZ2V0OyBzZXQ7fQogICBwdWJsaWMgaW50IEZpZWxkMSB7IGdldDsgc2V0OyB9CiAgIHB1YmxpYyBpbnQgRmllbGQyIHsgZ2V0OyBzZXQ7IH0KfQo=