我有一个列表(假设它具有值):
var IdNumber = new List<string>();
我有一个linq:
var output = list.Select(y => new {
Id = IdNumber[index],
Name = y.Name,
}).ToList();
是否存在可用于在ID中填充“ IdNumber”的索引?如果不可能,还有其他方法吗?
答案 0 :(得分:2)
选择可以给出索引。
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);
}
}
答案 1 :(得分:0)
select具有内置索引。您只需要在代码中指定第二个参数即可。
将代码的开头替换为
var output = list.Select((y, index) => new {
...
}).ToList();