2

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

例如

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

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

澄清:我希望结果是

id, 名字, 1
id, 名字, 2
id, 名字, 3

等等

4

4 回答 4

2

使用fluent-syntax中包含索引(也可用于 queryables )的重载Select,您可以执行以下操作:

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

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

于 2012-06-05T07:25:54.017 回答
1
var counter = 0;
var results =
    from foo in bar
    select new { foo.ID, foo.Name, Counter = ++counter }; 
于 2012-06-05T07:25:11.670 回答
0

可能是这样的:

var result= db.bar.Select((foo,i)=>select new {foo.ID, foo.Name, Counter = i+1});
于 2012-06-05T07:27:21.637 回答
0

使用索引 Select() 重载:

var results = bar.Select((foo, i) => new { foo.ID, foo.Name, Counter = i + 1});
于 2012-06-05T07:28:06.510 回答