我有一个linq查询需要将一个日期列从一行中拉出来。表达目前看起来像这样Linq - 从空值查询结果中提取值
myObject.OrderByDescending(s=> s.MyDate).Where(s => s.CRAStatus.Description == "CheckedOut").FirstOrDefault().MyDate)
的问题是,如果没有行是“签出”,查询将返回一个空并试图获得“指明MyDate”会抛出异常。我们有一些详细的解决方案,例如:
.ForMember(dest => dest.CheckOutDate, opt => opt.MapFrom(src => {
var temp = src.CRAStatusChangeEvents.OrderByDescending(s=> s.MyDate).Where(s => s.CRAStatus.Description == "CheckedOut").FirstOrDefault();
return temp == null ? temp.MyDate : null;
}));
但是,找到一些更简洁的东西会很好。有任何想法吗?
+1:总是高兴地看到希望简明扼要的可维护性和可读性乡亲代码... – RSolberg 2009-09-11 17:19:01