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

Get the current index position in a list when creating a new object in a linq expression

我在创建新对象时从 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],
}

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

在此先致谢,如有任何帮助,我们将不胜感激。

如果我对你的问题的理解正确,你有 List<Document> 个对象,你需要遍历此列表以获取创建其他对象的每个步骤的索引。
您 return 值是一个映射(我在这里使用字典)- 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 已经可以 return 你自己的类型了,我假设 AddMapping 是你自己的扩展方法,不过要获得 你的元组列表indexDocument 您很可能需要 运行 以下内容:

var mapper = new List<Document>();

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

告诉我这就是你需要的。