如何从Dictionary<int, float[]>各数组提取第n项?Linq替代foreach方案
用LINQ简化提取逻辑
你可以直接通过LINQ的Select方法配合ToArray来实现,完全不用嵌套循环:
情况1:按指定的keys集合顺序提取
如果需要严格遵循你代码里keys集合的顺序,直接对keys做映射:
float[] rowData = keys.Select(key => rawData[key][row]).ToArray();
情况2:直接使用字典中键的顺序提取
如果不需要额外指定keys,直接用字典的Values集合(注意:.NET Core 3.0+及.NET 5+中Dictionary会保留插入顺序,旧版本则不保证顺序):
float[] rowData = rawData.Values.Select(arr => arr[row]).ToArray();
补充说明
- 这两种写法都完全替代了原代码里的
foreach循环,逻辑更简洁直观 - 要确保所有
float[]的长度都大于row,避免索引越界异常
内容的提问来源于stack exchange,提问作者Betty Crokker
相关产品推荐
相关产品推荐

