Выбор может дать индекс.
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);
}
}
источник