【问题标题】:C# LINQ counting elements with DISTINCTC# LINQ 使用 DISTINCT 计数元素
【发布时间】:2013-07-13 04:52:23
【问题描述】:

我有一个 KeyValuePair 项的集合,其中 DateTime 为键,字符串为值。 基本上我的数据看起来像:

12/07/2013 - 10220
12/07/2013 - 10220
12/07/2013 - 12220
12/07/2013 - 11240
12/07/2013 - 15220
13/07/2013 - 23220
13/07/2013 - 35620
14/07/2013 - 15620
14/07/2013 - 15620

我想要一份我每天有多少物品(不同)的清单。所以查询将导致:

12/07/2013 - 4
13/07/2013 - 2
14/07/2013 - 1

【问题讨论】:

    标签: c# linq distinct key-pair


    【解决方案1】:

    以下是完整示例的解决方案

            var list = new[]
            {
                new {Date = new DateTime(2013,07,12), value = 10220},
                new {Date = new DateTime(2013,07,12), value = 10220},
                new {Date = new DateTime(2013,07,12), value = 12220},
                new {Date = new DateTime(2013,07,12), value = 11240},
                new {Date = new DateTime(2013,07,12), value = 15220},
                new {Date = new DateTime(2013,07,13), value = 23220},
                new {Date = new DateTime(2013,07,13), value = 35620},
                new {Date = new DateTime(2013,07,14), value = 15620},
                new {Date = new DateTime(2013,07,14), value = 15620},
            };
    
    
            var res = from l in list group l by new { l.Date } into g select new { g.Key.Date, value = g.Distinct().Count() };
    
            foreach (var item in res)
            {
                Console.WriteLine(item.Date + " " + item.value);
            }
    

    【讨论】:

      【解决方案2】:

      使用group by

      var dateGrouped = dates.GroupBy(x => x.Key)
                             .Select(x => new { Date = x.Key, Values = x.Distinct().Count() });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 2015-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多