Skip to main content
 首页 » 编程设计

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

2024年01月13日28dyllove98

我有一个类型化的自定义对象集合,它有两个 DateTime?属性、ExpirationDate 和 ExpirationDateExtended。我正在尝试根据这些属性从该集合中获取最新信息。通常,对于一个属性,我只使用 OrderByDescending 方法并获取第一个属性。这在下面进行了演示。

但是,我想做的是,如果 ExpirationDate 属性有值(不为空),则按 ExpirationDate 属性排序 (OrderByDescending),但是如果它没有值(空),则排序 (OrderByDescending) ) 通过 ExpirationDateExtended 属性。

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

var latestExpirationDate = myCollection 
.Where(item => item.ExpirationDate.HasValue) 
OrderByDescending(item => item.ExpirationDate) 
.Select(item => item.ExpirationDate)  
.FirstOrDefault(); 

请您参考如下方法:

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

OrderByDescending(item => item.ExpirationDate ?? item.ExpirationDateExtended)