2013-02-19 108 views
0

我想对具有StartTime特性的对象列表执行以下查询。问题是,有时可以创建值为null执行Linq查询时的时间距离条件计算

那么,我该如何检查值是否为null,以及它是否在2个值之间执行一个随机数?

var myOtherQuery = db.Table.Select(e=> e); 

var myQuery = myOtherQuery.Select(e => new { e, TimeDistance = ((DateTime) e.StartTime - DateTimeNow).TotalMinutes }); 

这是L2SQL * 某些对象在开始时间空值,这导致一个例外,而试图确定的该TimeDistance *

+1

哪里是空值发现了什么?你的意思是有时StartTime为空?您可以检查C#中的值使用??运算符 – TheKingDave 2013-02-19 15:49:20

+1

这是LINQ to SQL,LINQ to Objects,Entity Framework,还有其他什么? – 2013-02-19 15:49:22

回答

1

你的意思是这样的吗?

var myQuery = myOtherQuery.Select(e => 
    new { E = e, 
      TimeDistance = ((e.StarTime.HasValue ? e.StartTime.Value : someOtherValue) - DateTime.Now).TotalMinutes 
    } 
); 

或者:

var myQuery = myOtherQuery.Select(e => 
    new { E = e, 
      TimeDistance = (e.StarTime.HasValue ? (e.StartTime.Value - DateTime.Now) : someOtherValue).TotalMinutes 
    } 
); 
+0

看来是这样,让我检查!谢谢 – Lothre1 2013-02-19 15:54:51

+0

这种评估存在一个小问题。因为我不想用DateTime.Now减去一些其他值。 换句话说,我希望它是((StartTime和DateTime.Now)之间的计算的替代结果).TotalMinutes – Lothre1 2013-02-19 16:06:43

+0

好的 - 请参阅编辑:-) – chris 2013-02-19 16:15:35