【发布时间】:2015-09-24 08:21:57
【问题描述】:
当我执行以下操作时:
[EdmFunction("Edm", "TruncateTime")]
public static DateTime? TruncateDateTime(DateTime? inputDate)
{
return inputDate.HasValue ? inputDate.Value.Date : (DateTime?)null;
}
[EdmFunction("Edm", "TotalSeconds")]
public static double? GetTotalSeconds(DateTime? inputDate)
{
return inputDate.HasValue ? inputDate.Value.TimeOfDay.TotalSeconds: (double?)null;
}
var employeeSelection = (from c in MyContext.Employees.Where(c => c.From.HasValue && c.To.TimeOfDay.TotalSeconds != 0)
...
select new Employee
{
To = c.To != DateTime.MinValue && c.To.TimeOfDay.TotalSeconds != 0 ? TruncateDateTime(c.To).Value :
c.To != DateTime.MinValue && c.To.TimeOfDay.TotalSeconds == 0 ? c.From.Value.AddMinutes(30) : DateTime.MinValue
}
我明白了:
附加信息:指定类型成员'TimeOfDay'不是 在 LINQ to Entity 中支持。只有初始化器、实体成员和 支持实体导航属性。
当我尝试这个时:
var employeeSelection = (from c in MyContext.Employees.Where(c => c.From.HasValue && GetTotalSeconds(c.To) != 0)
...
select new Employee
{
To = c.To != DateTime.MinValue && GetTotalSeconds(c.To) != 0 ? TruncateDateTime(c.To).Value :
c.To != DateTime.MinValue && GetTotalSeconds(c.To) == 0 ? c.From.Value.AddMinutes(30) : DateTime.MinValue
}
我明白了:
附加信息:指定的方法 'System.Nullable
1[System.Double] GetTotalSeconds(System.Nullable1[System.DateTime])' 关于类型 'GetDateRangeMethod' 无法转换为 LINQ to Entities 存储表达式。
如何在 Linq to SQL 中找到总秒数?
谢谢
【问题讨论】:
-
尝试使用 DbFunctions msdn.microsoft.com/en-us/library/…
标签: c# entity-framework linq datetime timespan