【问题标题】:Grouping by list of dates and summing the sales按日期列表分组并对销售额求和
【发布时间】:2016-12-22 11:48:38
【问题描述】:

我有一种情况,我定义了一个如下所示的类:

class Item
{
List<DateTime> _TransactonDatesPast30Days =  new List<DateTime>();
}

所以情况可能如下:

I have 25 transaction dates in the list... 

下一项:

40 transaction dates 

所以现在我有一个包含所有这些参数的项目列表,如下所示:

List<Item> _items = new List<Item>();

现在我需要按列表中的列表进行分组,以获得最终列表中每天的销售数量...

例如:

12 月 12 日在所有 List 中出现了 14 次,现在它的计数是 14 ,这将代表该日期的销售数量...

在正常情况下,我会这样对它们进行分组:

ViewBag.LineGraph = lista
.GroupBy(l => l.TrasnactionDate)
.Select(cl => new Item
{
TrasnactionDate = cl.Key.TrasnactionDate.Date,
SaleNumber = cl.Count(c => cl.Key)
})
.OrderBy(x => x.TrasnactionDate)
.Where(x=>x.SaleNumber>0)
.ToList();

但是,当我在需要分组的列表中有列表时,这让我感到困惑,当我在需要按日期分组的列表中有列表时,我不知道现在该做什么......

【问题讨论】:

  • 大家有什么好的吗?我现在正在做一项研究,有人说应该为这个或字典实现一个列表中的列表?

标签: c# asp.net asp.net-mvc list group-by


【解决方案1】:

// 我猜这不是分组

 var result = _items.Select(x => x._TransactonDatesPast30Days).GroupBy(y => y).Select(x => new Item {_TransactonDatesPast30Days =  x.Key ,Salesnumber = x.Count()});

采用此解决方案:更新 2

   var resultt2 = _items.Select(x => x._TransactonDatesPast30Days).
                Select(r => r.GroupBy(x => x).Select(l => new Item { _TransactonDatesPast30Days = new List<DateTime>{l.Key}, Salesnumber = l.Count() }));

【讨论】: