Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq按日期和类型获取客户群_C#_Asp.net Mvc 3_Linq - Fatal编程技术网

C# Linq按日期和类型获取客户群

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

我正在使用C语言中的LINQ生成用于显示客户的报告。我想显示每种类型的客户数量

注册客户有三种类型:客人和经理。我想按客户按注册日期分组,然后按客户类型分组。i、 e如果今天插入了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;
通过以上查询,我得到了当天登记的最小客户数 提前谢谢

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);