Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq - Fatal编程技术网

C# 使用Linq从表中计算星期一、星期二等的数量

C# 使用Linq从表中计算星期一、星期二等的数量,c#,linq,C#,Linq,我想知道如何使用Linq和C计算表中周一、周二等的数量# 以下是我的示例数据: 状态日期 交货日期2015-04-16 11:57:47.000 交货日期2015-04-16 13:02:57.000 我知道我需要使用Group by对与1相同的周一、周二等进行分组 我的尝试: var mondays = rad.SMSSentItems .Where(x => (x.StatusDate.Value.DayOfWeek == DayOfWeek.Monday)

我想知道如何使用Linq和C计算表中周一、周二等的数量#

以下是我的示例数据:

状态日期
交货日期2015-04-16 11:57:47.000
交货日期2015-04-16 13:02:57.000
我知道我需要使用Group by对与1相同的周一、周二等进行分组

我的尝试:

var mondays = rad.SMSSentItems
    .Where(x => (x.StatusDate.Value.DayOfWeek == DayOfWeek.Monday) 
             && (x.Status == "DELIVRD"))
    .ToList()
    .Count;

您需要按所需状态(
deliverd
)进行筛选,然后按状态日期的
DayOfWeek
对其进行分组

var weekDays = rad.SMSSentItems
    .Where(x => x.Status == "DELIVRD")
    .AsEnumerable()
    .GroupBy(x => x.StatusDate.Value.DayOfWeek)
    .Select(g => {
        //Total items sent on this day of the week
        var totalItemCount = g.Count();
        //Total number if this distinct day of the week
        var totalNumberOfDays = g.Select(x => x.StatusDate.Value.Date).Distinct().Count();
        return new {
            DayOfWeek = g.Key,
            TotalItemCount = totalItemCount,
            TotalNumberOfDays = totalNumberOfDays,
            AverageItemPerDay = totalItemCount / totalNumberOfDays
        };
    })
    .ToList();

我们不是已经在SQL中这样做了吗?这是所有月份每天的平均计数。现在,我正在生成另一个报告,其中显示了一周中每天的平均短信发送量。我尝试了您的代码,发现以下错误:LINQ to Entities中不支持指定的类型成员“DayOfWeek”。仅支持初始值设定项、实体成员和实体导航属性。@Orion请参阅更新。Linq to SQL不知道如何转换
x.StatusDate.Value.DayOfWeek
,因此我通过将
AsEnumerable()
放置在数据库端执行过滤器来缩短生成的查询,然后Linq to entities将对投影对象进行分组。我通过了错误,然而,结果似乎并没有给我分组的时间。这就是我得到的结果:[星期一,10323]-[星期二,11031]-[星期三,11079]-[星期四,11145]-[星期五,9775]-[星期六,180]-[星期日,268]@Orion我想我现在明白了,根据你先前对原始问题的一个评论,你想要什么了。检查更新。这一针见血。这正是需要的。非常感谢。