C# Linq按日期和类型获取客户群
我正在使用C语言中的LINQ生成用于显示客户的报告。我想显示每种类型的客户数量 注册客户有三种类型:客人和经理。我想按客户按注册日期分组,然后按客户类型分组。i、 e如果今天插入了3名客人、4名注册经理和2名经理。明天4、5和6分别注册。然后报告应显示当天登记的客户数量。每种类型都有单独的行C# Linq按日期和类型获取客户群,c#,asp.net-mvc-3,linq,C#,Asp.net Mvc 3,Linq,我正在使用C语言中的LINQ生成用于显示客户的报告。我想显示每种类型的客户数量 注册客户有三种类型:客人和经理。我想按客户按注册日期分组,然后按客户类型分组。i、 e如果今天插入了3名客人、4名注册经理和2名经理。明天4、5和6分别注册。然后报告应显示当天登记的客户数量。每种类型都有单独的行 DATE TYPEOF CUSTOMER COUNT 31-10-2013 GUEST 3 31-10-2013 REGISTERED 4
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;
通过以上查询,我得到了当天登记的最小客户数
提前谢谢
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()
};
如果每日结果不需要按顺序排序,则可以删除第二次排序guest>registered>manager:
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()
};
_customerRepo.Table.GroupByx=>new{x.Date,x.Type};您将使用两个属性对它们进行分组,但现在,如果我要从表中获取每一列,该怎么办@Nitinvarpe您只能选择分组键和聚合值。要选择所有列,即它们的电话号码、地址、emailid,是否有任何解决方案?@Nitinvarpe要在第一行显示的电子邮件,如果你有三位客人在那一排?问题是,我有一些不同的属性分配给客户。我想表明我只给了你一个例子,我认为是错误的,所以请你原谅!!!如果我想从表中获取每一列呢@Nitinvarpe您的意思是什么?我想在报告中显示客户的其他一些常见属性,但不想按这些参数分组。或者我可以为iGroup编写扩展方法,比如gI相信它是g.Count,而不是g.Count吗
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);