C#foreach将list属性设置为使用list在一行中循环索引.Foreach


int loopIndex = 0;
foreach (var item in dataList)
{
item.ChannelId = loopIndex;
loopIndex++;
}

我在一行中寻找上述代码的替代品。类似于-dataList.ForEach(x=>x.ChannelId=...)

请提出建议。

如果你NuGet-Microsoft的"System.Interactive"扩展,那么你可以这样做:

dataList.ForEach((item, index) => item.ChannelId = index);

这是一行中的Linq附件,不需要安装另一个库

dataList = dataList.Select((x, i) => { x.ChannelId = i; return x; }).ToList();

代码:https://dotnetfiddle.net/SCEbyV


另一个近似——单线中经典的for环路

for (int i = 0; i < dataList.Count; i++) dataList[i].ChannelId = i;

尝试这个

dataList.ForEach(x => x.ChannelId = loopIndex++);

尝试这个

dataList= dataList.Select(x=>x.ChannelId=loopIndex++).ToList();