C# 使用Linq从表中计算星期一、星期二等的数量
我想知道如何使用Linq和C计算表中周一、周二等的数量# 以下是我的示例数据: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)
状态日期
交货日期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我想我现在明白了,根据你先前对原始问题的一个评论,你想要什么了。检查更新。这一针见血。这正是需要的。非常感谢。