我的数据库中有一个包含DateTime?的字段。我希望对结果进行排序,使空值显示在顶部,然后按DateTime降序,例如,
null
null
2012-04-01
2012-01-01
2011-09-04
原因是我正在查看过期日期,尽管有些条目不会过期。
发布于 2011-09-03 14:01:39
您可以从排序表达式中返回DateTime.MaxValue而不是null
,因此具有null
日期的行将首先排序:
yourData.OrderByDescending(row => row.dateTimeField ?? DateTime.MaxValue);
发布于 2012-02-17 03:04:19
我发现最直接的方法是:
data.OrderBy(Function(o) o.myDate IsNot Nothing).ThenByDescending(Function(o) o.myDate)
在C#我认为..。
data.OrderBy(o => o.myDate != null).ThenByDescending(o => o.myDate)
这也适用于LINQ to SQL。我不确定if(nullable, value)
是否会成功地转换成SQL。
发布于 2011-09-03 13:59:13
您可以尝试如下所示:
var nulls = table.Where(x => x.NullableDateTimeField == null);
var notNulls = table.Where(x => x.NullableDateTimeField != null);
var result = nulls.Concat(notNulls.OrderByDescending(x => x.NullableDateTimeField));
它“显然是正确的”,而不是“可能是超级高效的”,但它至少是一个起点。
https://stackoverflow.com/questions/7291435
复制相似问题