我有一个自定义对象的类型集合,它有两个DateTime? properties,ExpirationDate和ExpirationDateExtended。我想根据这些属性从这个集合中获取最新信息。通常,使用一个属性,我只使用OrderByDescending方法并获取第一个属性。这在下面说明。
但是,我想要做的是,如果ExpirationDate属性具有值(不为null),则由ExpirationDate属性排序(OrderByDescending),但是如果它没有值(null),则排序(OrderByDescending) )由ExpirationDateExtended属性。
在下面,myCollection变量表示我的自定义对象的集合。
var latestExpirationDate = myCollection
.Where(item => item.ExpirationDate.HasValue)
OrderByDescending(item => item.ExpirationDate)
.Select(item => item.ExpirationDate)
.FirstOrDefault();
答案 0 :(得分:9)
您应该能够使用空合并运算符
OrderByDescending(item => item.ExpirationDate ?? item.ExpirationDateExtended)
答案 1 :(得分:3)
您可以比较null
的字段,然后使用条件运算符指定字段,如:
OrderByDescending(item => item.ExpirationDate != null ? item.ExpirationDate :
item.ExpirationDateExtended)
答案 2 :(得分:2)
var latestExpirationDate = myCollection
.OrderByDescending(item => item.ExpirationDate ?? ExpirationDateExtended)
.FirstOrDefault();