Raj*_*mar 0 c# linq datatable winforms
我有一个数据表,其中包含以下列
CallTime CallType
15:45:00 Voice
15:30:54 Voice
00:12:14 SMS
01:13:47 Voice
05:48:23 SMS
12:00:47 Voice
Run Code Online (Sandbox Code Playgroud)
现在我想要使用像这样的Linq结果
Hrs Count
00 1
01 1
02 0
03 0
04 0
05 1
06 0
|
|
|
12 1
13 0
|
15 2
16 0
|
|
23 0
Run Code Online (Sandbox Code Playgroud)
我正在使用以下查询,它给我的数值> 0但我想得到那些也有count = 0
var groupQueryTimeTotal = (from r in Foundrows.AsEnumerable()
let time = TimeSpan.Parse(r.Field<string>("Call Time"))
group r by time.Hours
into g
select new
{
CallTime = g.Key,
CallCount = g.Count(),
}).OrderBy(s => s.CallTime);
Run Code Online (Sandbox Code Playgroud)
这个查询给我的结果就像
Hrs Count
00 1
01 1
05 1
12 1
15 2
Run Code Online (Sandbox Code Playgroud)
执行第一个集合和第二个集合所在的分组连接.Enumerable.Range(0, 24)Foundrows.AsEnumerable()
例:
var input = new List<TimeSpan>
{
new TimeSpan(15, 45, 00),
new TimeSpan(15, 30, 54),
new TimeSpan(00, 12, 14),
new TimeSpan(01, 13, 47),
new TimeSpan(05, 48, 23),
new TimeSpan(12, 00, 47),
};
var query = from hour in Enumerable.Range(0, 24)
join item in input on hour equals item.Hours into g
select new
{
CallTime = hour,
CallCount = g.Count(),
};
foreach (var x in query)
{
Console.WriteLine("{0:00} {1}", x.CallTime, x.CallCount);
}
Run Code Online (Sandbox Code Playgroud)