我正在尝试将一些时间戳与下面的linq语句分组
var ds = (from wl in dbEntities.tbl_weblog
group wl by new
{
wl.tms_stamp.Value.Date,
wl.tms_stamp.Value.TimeOfDay
} into dateGrp
select new
{
Date = dateGrp.Key.Date,
Time = dateGrp.Key.TimeOfDay,
HitCount = dateGrp.Count(),
TotalKB = dateGrp.Sum(m => m.int_bytes).Value / 1024
}
).ToList();
return Helpers.ToDataSet(ds);
但是我收到错误“ LINQ to Entities不支持指定的类型成员' Date '。仅支持初始值设定项,实体成员和实体导航属性。”。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
Linq-To-Entities没有DateTime.Date
到SQL的映射。因此,您必须将其分解为年,月,日和小时以获得您正在寻找的结果。
var ds = (from wl in dbEntities.tbl_weblog
group wl by new
{
wl.tms_stamp.Value.Year,
wl.tms_stamp.Value.Month,
wl.tms_stamp.Value.Day,
wl.tms_stamp.Value.Hour
} into dateGrp
select new
{
Year = dateGrp.Year,
Month= dateGrp.Month,
Day= dateGrp.Day,
Hour= dateGrp.Hour,
HitCount = dateGrp.Count(),
TotalKB = dateGrp.Sum(m => m.int_bytes).Value / 1024
}).ToList();
然后,当您使用ds
时,您可以将日期部分重新组合在一起。
foreach(var item in ds)
{
var date = new DateTime(item.Year, item.Month, item.Day);
var hour = item.Hour;
}