我有一个字符串列表,我想按数量订购.List包含Order-CreationDate列表和datetime值.我正在将这些值转换为字符串,因为我将在以后需要它.
我当前的输出是CreationDate列表,看起来像这样.
2014-04-05
2014-04-05
2014-04-05
2014-04-05
2014-04-06
2014-04-06
2014-04-06
...
Run Code Online (Sandbox Code Playgroud)
我按预期得到了一个日期列表,但我希望按日期分组日期.这意味着我需要另一个带有总订单数量的变量.我尝试使用for循环和linq查询创建一个新变量,但没有得到我想要的结果.
我如何获得订单数量CreationDate?我需要计算订单总数,CreationDate但我找不到办法做到这一点.
预期的产出是:
2014-04-05 4 - representing 4 orders that date
2014-04-06 3 - representing 3 orders that date.
Run Code Online (Sandbox Code Playgroud)
这就是我的代码:
List<string> TotalOrdersPaid = new List<string>();
foreach (var order in orders)
{
if (order.PaymentStatus == PaymentStatus.Paid)
{
string Created = order.CreatedOnUtc.Date.ToString("yyyy-MM-dd");
order.CreatedOnUtc = DateTime.ParseExact(Created, "yyyy-MM-dd", CultureInfo.InvariantCulture);
TotalOrdersPaid.Add(Created);
}
}
Run Code Online (Sandbox Code Playgroud)
例如,TotalOrdersPaid应该包含一个包含订单数量的列表CreationDate.
实现这一目标的好方法是什么?
谢谢
基本上,你只需要一个分组和订购.
var result = orders//add any where clause needed
.GroupBy(m => m)
.Select(m => new {
cnt = m.Count(),
date = m.Key
})
.OrderByDescending(m => m.cnt);
Run Code Online (Sandbox Code Playgroud)
当然,您可以在Select和/或项目中添加任何DateTime.Parse/ParseExact到相应的类.