Заполните список внутри оператора выбора linq, используя индекс запроса - PullRequest
0 голосов
/ 27 июня 2018

У меня есть список (предположим, у него есть значения):

var IdNumber = new List<string>();

и у меня есть linq:

var output = list.Select(y => new {
Id = IdNumber[index],
Name = y.Name,
}).ToList();

Есть ли индекс, который можно использовать для заполнения 'IdNumber' в Id? Если это невозможно, есть ли другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

select в linq имеет свой встроенный индекс. Вам просто нужно указать второй аргумент в коде.

Заменить начало вашего кода на

var output = list.Select((y, index) => new {
...
}).ToList();
0 голосов
/ 27 июня 2018

Выбор может дать индекс.

var output = list.Select((y,index) => new {
Id = IdNumber[index],
Name = y.Name,
}).ToList();

Базовая демонстрация:

public static void Main()
{
    var list = new[]{"abc","abc","abc"};

    foreach (var item in list.Select((x,i)=>x[i]))
        Console.WriteLine(item);
}

выход

a
b
c

Попробуйте онлайн!

Выберите реализацию:

public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, int, TResult> selector) {
    if (source == null) throw Error.ArgumentNull("source");
    if (selector == null) throw Error.ArgumentNull("selector");
    return SelectIterator<TSource, TResult>(source, selector);
}

static IEnumerable<TResult> SelectIterator<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, int, TResult> selector) {
   int index = -1;
       foreach (TSource element in source) {
          checked { index++; }
          yield return selector(element, index);
    }
}

источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...