按一个属性排序集合,如果为空,按不同属性排序

use*_*406 1 c# linq sorting

我有一个自定义对象的类型集合,有两个DateTime?properties,ExpirationDate和ExpirationDateExtended.我想根据这些属性从这个集合中获取最新信息.通常,使用一个属性,我只使用OrderByDescending方法并获取第一个属性.这在下面说明.

但是,我想要做的是,如果ExpirationDate属性有一个值(不是null),由ExpirationDate属性排序(OrderByDescending),但是如果它没有值(null),那么sort(OrderByDescending)由ExpirationDateExtended属性.

在下面,myCollection变量表示我的自定义对象的集合.

var latestExpirationDate = myCollection
.Where(item => item.ExpirationDate.HasValue)
OrderByDescending(item => item.ExpirationDate)
.Select(item => item.ExpirationDate) 
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

Mat*_*hew 9

您应该能够使用null合并运算符

OrderByDescending(item => item.ExpirationDate ?? item.ExpirationDateExtended)
Run Code Online (Sandbox Code Playgroud)