【问题标题】:C# - How to find most frequent date from listC# - 如何从列表中查找最频繁的日期
【发布时间】:2012-08-15 14:51:59
【问题描述】:

我似乎画了一个空白。我有一个销售清单,检索方式如下:

List<Sales> sales = ctn.Sales.Where(s => s.DateSold >= request.FromDate && s.DateSold <= request.ToDate).ToList();

销售列表中的项目如下所示:

销售ID |售出日期 |产品编号 |店铺编号

作为报告的一部分,我想向用户返回一个简单的字符串,告知他们哪一天是销售最多的一天。

所以我认为我应该做的是按天分组销售,计算每一天的数量,然后评估哪个数字最高,但是我不确定该怎么做。

谁能帮忙?

【问题讨论】:

    标签: c# linq group-by


    【解决方案1】:

    您只需在DateSold 上进行分组,然后按计数排序(这会告诉您有多少项目属于该组):

    salesByDay = sales.GroupBy(s => s.DateSold).OrderBy(g => g.Count());
    

    【讨论】:

    • 了解如果 DateSold 包含时间戳信息,它们将几乎是唯一的。您可以通过对 DateTime 的 Date 属性进行分组来删除时间戳以进行分组。
    【解决方案2】:

    如果您将已售商品的确切日期时间设置为 DateSold,您可能希望将 Date 参与并按它分组

    from sale in sales
    group sale by sale.DateSold.Date into grouped
    orderby grouped.Count()
    select new {Date = grouped.Key, Count = grouped.Count()};
    

    【讨论】:

      【解决方案3】:

      这将为您提供销售额最多的日期:

      sales.GroupBy(x =&gt; x.DateSold).OrderByDescending(g =&gt; g.Count()).FirstOrDefault().Key;

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 2021-12-09
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        相关资源
        最近更新 更多