当前位置:  开发笔记 > 编程语言 > 正文

LINQ to Objects自动递增编号

如何解决《LINQtoObjects自动递增编号》经验,为你挑选了2个好方法。

这感觉就像一个完全基本的问题,但是,对于我的生活,我似乎无法找到一个优雅的解决方案.

基本上,我正在进行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查询的上下文中执行此操作(以便我不必在查询后循环集合)?



1> veggerby..:

请原谅我在C#中这样做,不确定VB.NET中的语法:

MasterCalendarInstance
    .OrderBy(x => x.Key)
    .Select((x, ixc) => new { CalendarId = x.Key, Iter = ixc });


自动:)它是.Select扩展方法的重载,它接受一个Func (参见http://msdn.microsoft.com/en-us/library/bb534869.aspx)

2> Richard..:

我不知道这在VB中是否可行,但在C#中使用了一个闭包:

int count = 0
var res = from x in MasterCalendarInstance
          order by x.Key
          select new {
            CalendarId = x.Key,
            Iter = count++
          };

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有