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

时间:2012-06-05 07:22:37

标签: c# linq counter anonymous-types

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

E.g。

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

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

澄清:我希望结果是

id,name,1
id,name,2
id,name,3

诸如此类

4 个答案:

答案 0 :(得分: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 
                                          });

请注意,查询语法中不提供此重载。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

这样的事情可能是:

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

答案 3 :(得分:0)

使用索引的Select()重载:

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