Ren*_*nto 4 .net c# linq linq-to-objects .net-4.0
我有一个包含这样的数据的列表
ID | START_DATE | END_DATE | Chapter | ID_OWNER
1 01/03/2013 05:15:14 01/03/2013 06:20:14 1 1
1 01/03/2013 06:25:33 01/03/2013 06:40:11 2 1
1 01/03/2013 05:15:14 01/03/2013 06:20:15 1 2
1 01/03/2013 06:25:33 01/03/2013 06:40:18 2 2
2 01/03/2013 05:01:34 01/03/2013 05:30:13 1 3
2 01/03/2013 05:31:20 01/03/2013 06:30:13 2 3
2 01/03/2013 06:32:20 01/03/2013 07:20:01 3 3
1 02/03/2013 05:15:14 01/03/2013 06:20:14 1 1
1 02/03/2013 06:25:33 01/03/2013 06:40:11 2 1
Run Code Online (Sandbox Code Playgroud)
我想创建一个像这样的字典:
Dictionary<int, Dictionary<string,int>
Dictionary<ID, Dictionary<START_DATE.Date, Total of owners>
Run Code Online (Sandbox Code Playgroud)
结果留在哪里.
ID
1
START_DATE | TOTAL
01/03/2013 2
02/03/2013 1
ID
2
START_DATE | TOTAL
01/03/2013 1
Run Code Online (Sandbox Code Playgroud)
有没有办法用linq使用C#来做到这一点?
您可以尝试使用一对GroupBy
和一对调用ToDictionary
,如下所示:
var res = list
.GroupBy(v => v.ID)
.ToDictionary(
g => g.Key
, g => g.GroupBy(v => v.START_DATE.Date)
.ToDictionary(h => h.Key, h => h.Seelct(x => x.ID_OWNER).Distinct().Count())
);
Run Code Online (Sandbox Code Playgroud)
如果您还想添加每天的总时间,您可以这样做:
var res = list
.GroupBy(v => v.ID)
.ToDictionary(
g => g.Key
, g => g.GroupBy(v => v.START_DATE.Date)
.ToDictionary(h => h.Key, h => new {
Count = h.Seelct(x => x.ID_OWNER).Distinct().Count())
, TotalTime = h.Sum(h => x.END_DATE-x.START_DATE)
}
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
573 次 |
最近记录: |