Я пытаюсь подсчитать, сколько сообщений отправлено в час. но мой код возвращает неверный результатLINQ Left Join, Group By and Count
Это оригинальный запрос sqlite, который я использовал, он работает правильно.
SELECT Hours.hour, ifnull(count(Messages.hour),0) as count Hours LEFT JOIN Messages on Messages.hour = Hours.hour by Hours.hour
но я новый в LINQ, и вот мой код и запрос.
int[] Hours = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 };
var sortByHour = from h in Hours
join m in Messages on h equals m.Hour into g
orderby h ascending
select new
{
Hour = h,
Total = g.Count()
};
и возвращает
[0] { Hour = 0, Total = 33485 }
[1] { Hour = 1, Total = 0 }
[2] { Hour = 2, Total = 0 }
[3] { Hour = 3, Total = 0 }
...
[23] { Hour = 23, Total = 0 }
первые данные имеют ряд общих строк и других имеет 0. его неправильно.
результат должен быть как этот
[0] { Hour = 0, Total = 501 }
[1] { Hour = 1, Total = 408 }
[2] { Hour = 2, Total = 181 }
[3] { Hour = 3, Total = 84 }
...
[23] { Hour = 23, Total = 1055 }
как я могу исправить мой код? заранее спасибо.