Получить текущую позицию индекса в списке при создании нового объекта в выражении linq - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблемы с доступом к текущей позиции из списка 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],
}

В позиции индекса мне нужна текущая позиция объекта.

Заранее спасибо, любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 ноября 2019

Если я правильно понимаю вашу проблему , у вас есть объект List<Document>, и вам нужно пройти по этому списку, имея индекс каждого шага для создания какого-либо другого объекта.
Возвращаемое вами значение являетсяотображение (я бы использовал здесь словарь) - IEnumerable из 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)); 

Дайте мне знать, что это то, что вам нужно.

...