【发布时间】:2017-12-23 20:36:53
【问题描述】:
我已经尝试使用this SO question 中的选项。我仍然收到以下错误:
The specified type member 'DayOfWeek' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
现在已编辑问题以包含我要实现的目标的完整代码。它基本上需要拉取一周中每天发送的平均短信数。
这是我的代码:
var weekDays = rad.SMSSentItems
.Where(x => x.Status == "DELIVRD")
.GroupBy(x => x.StatusDate.Value.DayOfWeek)
.Select(g => new
{
DayOfWeek = g.Key,
Count = g.Count()
})
.ToList();
int avgSMSPerMonday = 0;
int avgSMSPerTuesday = 0;
int avgSMSPerWednesday = 0;
int avgSMSPerThursday = 0;
int avgSMSPerFriday = 0;
int avgSMSPerSaturday = 0;
int avgSMSPerSunday = 0;
int totalSMSPerDay = 0;
foreach (var day in weekDays)
{
totalSMSPerDay = rad.SMSSentItems.Where(x => (DbFunctions.TruncateTime(x.StatusDate).Value.DayOfWeek == day.DayOfWeek) && (x.Status == "DELIVRD")).ToList().Count;
if (day.DayOfWeek == DayOfWeek.Monday)
avgSMSPerMonday = totalSMSPerDay / day.Count;
else if (day.DayOfWeek == DayOfWeek.Tuesday)
avgSMSPerTuesday = totalSMSPerDay / day.Count;
else if (day.DayOfWeek == DayOfWeek.Wednesday)
avgSMSPerWednesday = totalSMSPerDay / day.Count;
else if (day.DayOfWeek == DayOfWeek.Thursday)
avgSMSPerThursday = totalSMSPerDay / day.Count;
else if (day.DayOfWeek == DayOfWeek.Friday)
avgSMSPerFriday = totalSMSPerDay / day.Count;
else if (day.DayOfWeek == DayOfWeek.Saturday)
avgSMSPerSaturday = totalSMSPerDay / day.Count;
else if (day.DayOfWeek == DayOfWeek.Sunday)
avgSMSPerSunday = totalSMSPerDay / day.Count;
}
使用 Camillo 的代码更新代码:
var weekDays = rad.SMSSentItems
.Where(x => x.Status == "DELIVRD")
.GroupBy(x => x.StatusDate.Value.DayOfWeek)
.Select(g => new
{
DayOfWeek = g.Key,
Count = g.Count()
})
.ToDictionary(x => x.DayOfWeek, x => x.Count);
int mondayCount = 0;
int tuesdayCount = 0;
int wednessdayCount = 0;
int thursdayCount = 0;
int fridayCount = 0;
int saturdayCount = 0;
int sundayCount = 0;
//determine average number of sms's sent per day of week
foreach (var day in weekDays)
{
int daysCount = rad.SMSSentItems
.Where(x => (x.StatusDate.Value.DayOfWeek == day.Key)
&& x.Status == "DELIVRD")
.Count();
if (day.Key == DayOfWeek.Monday)
mondayCount = daysCount / day.Value;
else if (day.Key == DayOfWeek.Tuesday)
tuesdayCount = daysCount / day.Value;
else if (day.Key == DayOfWeek.Wednesday)
wednessdayCount = daysCount / day.Value;
else if (day.Key == DayOfWeek.Thursday)
thursdayCount = daysCount / day.Value;
else if (day.Key == DayOfWeek.Friday)
fridayCount = daysCount / day.Value;
else if (day.Key == DayOfWeek.Saturday)
saturdayCount = daysCount / day.Value;
else if (day.Key == DayOfWeek.Sunday)
sundayCount = daysCount / day.Value;
}
我仍然留下从第一个查询中得到的初始错误,如下所示:
The specified type member 'DayOfWeek' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported
【问题讨论】:
-
指的是循环中的当前项。
-
你真的不应该在发布答案后彻底改变问题。这就是为什么您应该首先提供所有相关信息的原因。请阅读How to Ask 并采取tour
-
我很抱歉@Plutonix
标签: c# entity-framework linq