ale*_*mac 4 c# linq entity-framework entity-framework-6
我有一个设备型号:
public class DeviceModel
{
public DateTime Added { get;set; }
}
Run Code Online (Sandbox Code Playgroud)
我想选择按Added
日期分组的设备数量(不是日期和时间,而只是日期).我当前的实现无效,因为linq无法转换DateTime.Date
为sql:
var result = (
from device in DevicesRepository.GetAll()
group device by new { Date = device.Added.Date } into g
select new
{
Date = g.Key.Date,
Count = g.Count()
}
).OrderBy(nda => nda.Date);
Run Code Online (Sandbox Code Playgroud)
如何更改此查询以使其工作?
vol*_*pav 11
好吧,根据这个 MSDN文档,Date
LINQ to SQL支持属性,我假设Entity Framework也支持它.
无论如何,尝试这个查询(注意我正在使用TruncateTime方法,以避免重复解析日期):
var result = from device in
(
from d in DevicesRepository.GetAll()
select new
{
Device = d,
AddedDate = EntityFunctions.TruncateTime(d.Added)
}
)
orderby device.AddedDate
group device by device.AddedDate into g
select new
{
Date = g.Key,
Count = g.Count()
};
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.