这感觉就像一个完全基本的问题,但是,对于我的生活,我似乎无法找到一个优雅的解决方案.
基本上,我正在进行LINQ查询,从查询中创建一个新对象.在新对象中,我想生成一个自动递增的数字,以便我保留一个选择顺序供以后使用(Iter
在我的例子中命名).
这是我目前的解决方案,它做我需要的:
Dim query2 = From x As DictionaryEntry In MasterCalendarInstance _ Order By x.Key _ Select New With {.CalendarId = x.Key, .Iter = 0} For i = 0 To query2.Count - 1 query2(i).Iter = i Next
有没有办法在LINQ查询的上下文中执行此操作(以便我不必在查询后循环集合)?
请原谅我在C#中这样做,不确定VB.NET中的语法:
MasterCalendarInstance .OrderBy(x => x.Key) .Select((x, ixc) => new { CalendarId = x.Key, Iter = ixc });
我不知道这在VB中是否可行,但在C#中使用了一个闭包:
int count = 0 var res = from x in MasterCalendarInstance order by x.Key select new { CalendarId = x.Key, Iter = count++ };