Как пересчитать элементы с помощью IEnumerable.Select? - PullRequest
0 голосов
/ 15 апреля 2011
IEnumerable<MyType> list = new List<MyType>{
    new{Num=0, Text="ABC"},
    new{Num=0, text="DEF"},
    new{Num=0, text="GHI"} }

Мне нужно получить индекс элемента в поле Num:

IEnumerable<MyType> result = new List<MyType>{
    new{Num=1, Text="ABC"},
    new{Num=2, text="DEF"},
    new{Num=3, text="GHI"} }

Возможно ли это сделать с помощью какой-либо конструкции на основе LINQ?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011
var result = list.Select(
    (element, index) => new MyType { Num = index + 1, Text = element.Text }
);
0 голосов
/ 15 апреля 2011
var newList = list.Zip(Enumerable.Range(1, list.Length),
    (item, i) => new { Num = i, item.text}).ToList();
...