字典 linq 选择上一个

本文关键字:上一个 选择 linq 字典 | 更新日期: 2023-09-27 18:32:54

如何在select(foreach)中获取以前的元素,像这样dic[index -1].Key

new Dictionary<int, double>();
dic.Select(x => x.Value*(x.Equals(dic.FirstOrDefault()) ? x.Key : //x.Key - dic[index -1].Key//)).Sum()

字典 linq 选择上一个

Select方法提供一个索引作为第二个参数。

dic.Select((x, index) => dict[index])

如果要在上一个索引处选择一个元素,可以使用ElementAt

dic.Select((x, index) => dic.ElementAt(index).Key)
如果您

使用OrderedDictionary那么使用直foreach可能会更快:

double sum = 0.0;
int prev = 0;
foreach(var kvp in dic)
{
    sum += kvp.Value * (kvp.Key - prev);
    prev = kvp.Key;
}

无论如何,我会首先想出一些有用的东西,然后重构它,如果你能让它变得更好。 而"更好"可能不是使用 Linq;在大多数情况下,难以理解和调试的复杂 Linq 查询比干净、高效的循环更糟糕。