Linq按日期获取客户组,然后按类型分组

我正在制作报告,以便在C#中使用LINQ显示客户。 我想表明不。 每种类型的客户。

有3种类型的客户注册,客人和经理。 我希望按客户的注册日期和客户类型进行分组。 即如果今天有3位客人,4位注册人员和2位经理人员。 明天4,5和6是注册的。 然后报告应显示当天注册的客户数量。 每种类型的单独行。

DATE TYPEOF CUSTOMER COUNT 31-10-2013 GUEST 3 31-10-2013 REGISTERED 4 31-10-2013 MANAGER 2 30-10-2013 GUEST 5 30-10-2013 REGISTERED 10 30-10-2013 MANAGER 3 

像这样 。

 var subquery = from eat in _customerRepo.Table group eat by new { yy = eat.CreatedOnUTC.Value.Year, mm = eat.CreatedOnUTC.Value.Month, dd = eat.CreatedOnUTC.Value.Day } into g select new { Id = g.Min(x => x.Id) }; var query = from c in _customerRepo.Table join cin in subquery.Distinct() on c.Id equals cin.Id select c; 

通过上面的查询我得到当天注册的最小cutomer事先谢谢

 var query = _customerRepo.Table .GroupBy(c => new {Date = c.Date.Date, Type = c.TypeOfCustomer}) .Select(g => new { Date = g.Key.Date, Type = g.Key.Type, Count = g.Count } ) .OrderByDescending (r = r.Date); 
 var query = from c in _customerRepo.Table group c by new { c.TypeOfCustomer, c.Date } into g orderby g.Key.Date descending, g.Key.TypeOfCustomer == "GUEST" ? 1 : g.Key.TypeOfCustomer == "REGISTERED" ? 2 : 3 select new { g.Key.Date, g.Key.TypeOfCustomer, Count = g.Count() }; 

如果每日结果不需要客人>注册>经理,您可以删除第二个订购:

 var query = from c in _customerRepo.Table group c by new { c.TypeOfCustomer, c.Date } into g orderby g.Key.Date descending select new { g.Key.Date, g.Key.TypeOfCustomer, Count = g.Count() };