2012-06-05 2 views
2

Возможно ли, что счетчик растет при создании запроса Linq, возвращающего анонимный объект?Анонимный тип с счетчиком для каждого результата

E.g.

var results = from foo in bar select new { foo.ID, foo.Name, Counter = ???? }  

Я уже пробовал определять метод, который возвращает все большее число, но конечный результат будет одинаковым для всех объектов.

Для уточнения: я хочу, чтобы результат

ID, имя, 1
идентификатор, имя, 2
идентификатор, имя, 3

Etcetera

ответ

1
var counter = 0; 
var results = 
    from foo in bar 
    select new { foo.ID, foo.Name, Counter = ++counter }; 
2

С overload of Select that includes the index (также available for queryables) экспресс-синтаксис, вы можете сделать:

var results = bar.Select((foo, index) => new 
             { 
              foo.ID, 
              foo.Name, 
              Counter = index + 1 
              }); 

Обратите внимание, что эта перегрузка недоступна в синтаксисе запроса.

+0

Спасибо! Это работает. –

0

Что-то вроде этого, может быть:

var result= db.bar.Select((foo,i)=>select new {foo.ID, foo.Name, Counter = i+1}); 
0

Используйте индексированные Select() перегрузки:

var results = bar.Select((foo, i) => new { foo.ID, foo.Name, Counter = i + 1}); 
Смежные вопросы