不可为null的System.DateTime的值
本文关键字:System DateTime 的值 null | 更新日期: 2023-09-27 18:21:41
以下代码适用于可为null的DateTime:
lastSync = syncHistsQuery.Max(m => m.Value);
为什么相同的代码不适用于不可为null的DateTime?错误如下:
'System.DateTime' does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'System.DateTime' could be found (are you missing a using directive or an assembly reference ?)
我必须在数据库中将DateTime更改为可为Null的DateTime吗?有没有其他方法可以为不可为null的DateTimes编写代码?
以下是整个功能,以防有帮助:
public static DateTime GetMaxSyncDateTime()
{
DateTime lastSync = DateTime.MinValue;
using (var db = new CarbonContext())
{
var syncHistsQuery = from s in db.SyncHistories
select s.SyncHistDateTime;
lastSync = syncHistsQuery.Max(m => m.Value);
}
return lastSync;
}
"Nullable"DateTime?
实际上是的语法糖
Nullable<DateTime>
它有两个属性
public Boolean HasValue
public DateTime Value
http://msdn.microsoft.com/en-us/library/b3h38hb0(v=vs.110).aspx
DateTime
本身有很多性质,但没有Value
性质
http://msdn.microsoft.com/en-us/library/vstudio/system.datetime(v=vs.100).aspx
由于DateTime
实现了IComparable<DateTime>
,所以只需使用Max()
:
lastSync = syncHistsQuery.Max();
因为不可为null的DateTime
没有Value
属性。您使用
lastSync = syncHistsQuery.Max();
如果您正在使用DateTimes
。
DateTime
没有.Value
属性,这是来自Nullable<T>
的属性。
你可以做:
lastSync = syncHistsQuery.Max(m => m);
或者,正如所指出的,你可以将其缩短为:
lastSync = syncHistsQuery.Max();