Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq查询-获取当前月份加上以前月份_Linq - Fatal编程技术网

Linq查询-获取当前月份加上以前月份

Linq查询-获取当前月份加上以前月份,linq,Linq,我需要构建一个Linq查询,该查询将显示以下结果: Data: Sales Month ---------------------- 10 January 20 February 30 March 40 April 50 May 60 June 70 July 80 August 90 September 100 October 110 November 120 Decembe

我需要构建一个Linq查询,该查询将显示以下结果:

Data:

Sales   Month
----------------------
10      January
20      February
30      March
40      April
50      May
60      June
70      July
80      August
90      September
100     October
110     November
120     December
我需要根据这个场景得到结果: x月=x月+上个月 这将导致:

Sales   Month
--------------------
10      January
30      February (30 = February 20 + January 10)
60      March    (60 = March 30 + February 30)
100     April    (100 = April 40 + March 60)
.........
有关于如何构建此查询的帮助吗


非常感谢

既然你想把它放在林肯

void Main()
{
    List<SaleCount> sales = new List<SaleCount>() {
        new SaleCount() { Sales = 10, Month = 1 },
        new SaleCount() { Sales = 20, Month = 2 },
        new SaleCount() { Sales = 30, Month = 3 },
        new SaleCount() { Sales = 40, Month = 4 },
        ...
    };

    var query = sales.Select ((s, i) => new
    {
        CurrentMonth = s.Month,
        CurrentAndPreviousSales = s.Sales + sales.Take(i).Sum(sa => sa.Sales)
    });
}

public class SaleCount
{
    public int Sales { get; set; }
    public int Month { get; set; }
}

…但在我看来,在这种情况下,提出一些奇特的LINQ并不像编写LINQ查询将生成的代码那样清晰。这也不能扩展。例如,如果只是用老式的方式写出来的话,包含多年的数据会变得更加复杂。

如果你不想把以前每个月的销售额加起来,你就必须以某种方式跟踪总销售额。聚合函数在这方面可以正常工作,因为我们可以构建一个列表,并使用它的最后一个元素作为计算下一个元素的当前总数

var sales = Enumerable.Range(1,12).Select(x => x * 10).ToList();
var sums = sales.Aggregate(new List<int>(), (list, sale) => list.Concat(new List<int>{list.LastOrDefault() + sale});

你说的是对象上的linq2sql还是linq查询?嗨,Shoaib:linq查询对象加载,用[the sequence.Skip1]压缩序列。如果不知道您实际使用的类型,我们无法提供更多详细信息,更不用说代码了。