计算列表中数字之间的差异

时间:2021-05-07 17:04:24

标签: c#

我有一个整数列表:

List<Int32?> numbers = new List<Int32?> { 2, 1, 3, null, 6, 7 }

我需要得到一个包含两个连续值之间差异的列表,所以结果是:

{ null, -1, 2, null, null, 1 }

null
-1 = 1-2
2 = 3-1
null = null-3
null = 6-null
1 = 7-6

这可以使用 LINQ 来完成吗?

2 个答案:

答案 0 :(得分:1)

不要认为你可以用链接来做,但你可以这样做:

List<int?> Method(List<int?> list)
    {
        int? priv = null;
        List<int?> ret = new List<int?>();
        foreach (var cornt in list)
        {
            if (cornt == null || priv == null) ret.Add(null);
            else ret.Add(cornt - priv);
            priv = cornt;          
        }

        return ret;
    }

答案 1 :(得分:1)

你能用 LINQ 做这件事吗?是:

var diffs = numbers.Select((_, i) => i == 0 ? null : numbers[i] - numbers[i - 1]);

你应该用 LINQ 做这件事吗?可能不会。

相关问题