在linq表达式中创建新对象时获取列表中的当前索引位置

问题描述 投票:0回答:1

创建新对象时从LINQ列表访问当前位置时遇到问题

我试图声明一个变量,并在新对象内对其进行递增,但没有结果。我没有其他想法。在linq表达式中搜索了一段时间,但找不到答案

var mapper = Singleton.CreateMapper<DocOutput, List<Document>>();
mapper.AddMapping(r => r.Docs, i => i, (x) => new Document() 
{
    Id = x.ElementAt( Index Position ).Extrato1.Split('.')[0],
}

在索引位置,我需要当前的对象位置。

感谢您,我们将不胜感激。

c# linq automapper mapper
1个回答
0
投票

如果我正确理解了您的问题,则>],您具有List<Document>对象,并且需要遍历此列表,并逐一列出用于创建其他对象的每个步骤的索引。您返回的值是一个映射(我在这里使用字典)-IEnumerable of Tuple<int, object>

为什么不简单地使用select这样创建元组:

var mapper = new List<Document>();

var mapping = mapper.
                  Select((doc, n) => new System.Tuple<int, Document>(n, doc)); 

当然select已经可以返回您自己的类型,我假设AddMapping是您自己的扩展方法,但是仍然获得了很可能是您的索引

Document的元组列表必须运行以下命令:
var mapper = new List<Document>();

var mapping = mapper.
                  Select((doc, n) => 
                         new System.Tuple<int, Document>(doc.ElementAt(n).Extrato1.Split('.')[0], doc)); 

让我知道这就是您所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.