c# - 如何在 LINQ 表达式的内部选择中有一个索引值?

标签 c# linq

我有以下内容:

 var ts = _q.GetAll()
       .Where(m => m.a == 1)
       .Select(m => new MyClass 
                    {
                    Id = ???,
                    QId = m.q
                    })
       .ToList();

我怎样才能使 MyClass 中的 Id 字段获得索引 值从 1 开始并为每个新创建的 MyClass 递增?

请注意,我确实尝试指定 .Select(m, index => 等,但这 给我一个错误。

最佳答案

您可以使用 overload of Select给你索引:

var ts = _q.GetAll()
   .Where(m => m.a == 1)
   .Select((m, index) => new MyClass 
                {
                    Id = index + 1,
                    QId = m.q
                })
   .ToList();

I did try to specify .Select(m, index => etc but this gives me an error

是的,因为缺少括号。

关于c# - 如何在 LINQ 表达式的内部选择中有一个索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835861/

相关文章:

c# - DateTime 转换为 Date,然后在 C# 中返回 DateTime

c# - LINQ to Entities 无法识别 MVC5 中的方法 'System.DateTime ParseExact(System.String, System.String, System.IFormatProvider)' 方法错误

c# - 尝试分配给 C# 'foreach iteration variable' 会生成编译时错误。在 Linq [IEnumerable].ForEach(...) 中这样做不会。为什么?

c# - 如何在 asp.net MVC 中创建 URL 字符串

c# - 测试 SQL 连接有效性

c# - DateTime 转换为 Unix Epoch 添加 Phantom Hour

c# - 在自引用表中查找顶级实体

c# - 比较具有毫秒精度的日期时间

c# - 从序列末尾获取元素的linq扩展方法

c# - 如何将Azure Mobile服务数据放入Asp.net(C#)中的 GridView 中?