【发布时间】:2015-03-27 03:34:28
【问题描述】:
我有一个名为“Samples”的表,其中包含以下列:Id、Type、Quantity、Unit、SampleTime。
我有以下计算每日平均体重的语句:
weightchart.data = db.Samples
.Where(n => n.Type == "weight")
.GroupBy(n => DbFunctions.TruncateTime(n.SampleTime))
.Select(item => new ChartData()
{
timestamp = item.Key,
average = item.Average(a => a.Quantity),
max = item.Max(a => a.Quantity),
min = item.Min(a => a.Quantity),
count = item.Count()
}).OrderBy(n => n.timestamp).ToList();
charts.Add(weightchart);
现在我想得到每小时的平均值。我不知道该怎么做。我是 c#、linq 和实体的新手。
更新:我已将我的声明更新为:
weightchart.data = db.Samples.Where(n => n.Type == "weight").GroupBy(n => new { Date = n.SampleTime.Date, Hour = n.SampleTime.Hour }).Select(item => new ChartData()
{
timestamp = new DateTime(item.Key.Date.Year, item.Key.Date.Month, item.Key.Date.Day, item.Key.Date.Hour, 0, 0),
average = item.Average(a => a.Quantity),
max = item.Max(a => a.Quantity),
min = item.Min(a => a.Quantity),
count = item.Count()
}).OrderBy(n => n.timestamp).ToList();
charts.Add(weightchart);
但是我得到了这个异常:
EntityFramework.SqlServer.dll 中出现“System.NotSupportedException”类型的异常,但未在用户代码中处理 附加信息:LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化器、实体成员和实体导航属性。
【问题讨论】:
-
您可以尝试使用
SqlFunctions.DatePart,但我不确定哪些 EF 版本支持它。 -
你能给我一些示例代码吗?我已经用谷歌搜索了这个和很多我不能使用的例子,因为似乎大多数人没有使用实体,但我相信 Linq to Sql。
-
请将您的答案作为答案发布,而不是对问题进行编辑。
标签: c# sql-server linq entity-framework linq-to-entities