【问题标题】:Anonymous type with counter for each result每个结果都有计数器的匿名类型
【发布时间】:2012-06-05 07:22:36
【问题描述】:

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

例如

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

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

澄清一下:我希望结果是

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

等等

【问题讨论】:

    标签: c# linq counter anonymous-types


    【解决方案1】:

    使用流利语法中的overload of Select that includes the index(也称为available for queryables),您可以:

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

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

    【讨论】:

      【解决方案2】:
      var counter = 0;
      var results =
          from foo in bar
          select new { foo.ID, foo.Name, Counter = ++counter }; 
      

      【讨论】:

        【解决方案3】:

        可能是这样的:

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

        【讨论】:

          【解决方案4】:

          使用索引的 Select() 重载:

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

          【讨论】:

            猜你喜欢
            • 2022-08-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-01
            相关资源
            最近更新 更多