C# 每个结果都带有计数器的匿名类型

C# 每个结果都带有计数器的匿名类型,c#,linq,counter,anonymous-types,C#,Linq,Counter,Anonymous Types,在创建返回匿名对象的Linq查询时,计数器是否可能上升 例如 我已经尝试过定义一个返回递增数字的方法,但最终结果对于所有对象都是一样的 澄清一下:我希望结果是 id,名称,1 id,名称,2 身份证,姓名,3 等等使用(同样)流利的语法,您可以执行以下操作: var counter = 0; var results = from foo in bar select new { foo.ID, foo.Name, Counter = ++counter }; var resul

在创建返回匿名对象的Linq查询时,计数器是否可能上升

例如

我已经尝试过定义一个返回递增数字的方法,但最终结果对于所有对象都是一样的

澄清一下:我希望结果是

id,名称,1
id,名称,2
身份证,姓名,3

等等

使用(同样)流利的语法,您可以执行以下操作:

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

请注意,此重载在查询语法中不可用。

类似的内容可能是:

var result= db.bar.Select((foo,i)=>select new {foo.ID, foo.Name, Counter = i+1});
使用索引Select()重载:

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