按数量订购字符串列表

Who*_*AmI 0 c# linq list

我有一个字符串列表,我想按数量订购.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.

实现这一目标的好方法是什么?

谢谢

Rap*_*aus 5

基本上,你只需要一个分组和订购.

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到相应的类.