如何分组项目列表<keyvaluepair <string,datetime [] =“”>&gt;过期

时间:2017-04-26 06:48:27

标签: c# list count fill

我有一个由日期,日期,名称和类型填充的数据表,所以我从这个数据表读入List&gt;使用C#.net这样 代码是这样的:

 dicArray = dtrd.AsEnumerable()
    .Select(Row => Row["IDp"]).Distinct()
    .Select(Id => new KeyValuePair<string, string[]>(
        Id.ToString(),
        dtrd.AsEnumerable()
            .Where(Row => Row["IDp"].ToString() == Id.ToString())
            .Select(Row => Row["date"].ToString()+";"+ Row["day"].ToString()+";"+Row["nobatkari"].ToString() + ";" + Row["pname"].ToString())
            .ToArray()))
    .ToList();

现在我想计算每个项目的日期,我的意思是我想知道有多少行具有相同的日期 请帮我解决一下

例如:

1   **2017-02-19** 15:12:20 1   0   1   0
1   **2017-02-19** 15:12:37 1   0   1   0
1   **2017-02-19** 15:12:41 1   0   1   0  Count:3
1   **2017-02-20** 15:14:10 1   2   1   0
1   **2017-02-20** 16:38:14 1   2   1   0
3   **2017-02-20** 16:38:19 1   2   1   0   Count:3
3   **2017-02-21** 16:39:09 1   0   1   0
3   **2017-02-21** 17:25:06 1   0   1   0
2   **2017-02-21** 18:28:50 1   0   1   0   Count:3
2   **2017-02-22** 18:29:04 1   0   1   0   Count:1
2   **2017-02-23** 18:29:17 1   0   1   0
3   **2017-02-23** 18:30:45 1   0   1   0   Count:2
2   **2017-02-24** 18:31:32 1   0   1   0
2   **2017-02-24** 18:31:47 1   0   1   0   Count:2
2   **2017-02-25** 18:32:18 1   4   1   0   Count:1

当然我想要日期部分而不是时间包括

1 个答案:

答案 0 :(得分:0)

var res = yourList.GroupBy(x => x.date.Date).Select(x=> new { date = x.Key, count = x.Count() });

这将为每个日期创建一个新的列表包含日期和元素数。