如何在实体框架中按具有空值的列进行排序

问题描述 投票:31回答:3

有人知道如何最后返回具有空值的字符串的有序列表吗?我有这样的东西:

using(var context = new DomainEntities())
{
    var result = context.Users.OrderBy(u => u.LastName).ThenBy(u => u.FirstName);
}

尽管我的问题是此查询在非空值之前返回空值。

有什么想法吗?

entity-framework
3个回答
58
投票

我愿意:

using(var context = new DomainEntities())
{
    var result = context.Users.OrderBy(u => u.LastName == null)
                              .ThenBy(u => u.LastName)
                              .ThenBy(u => u.FirstName == null)
                              .ThenBy(u => u.FirstName);
}

...应该产生合理的SQL。

编辑:解释(摘自克雷格的评论):

因为falsetrue之前排序。


5
投票

我不知道您是否可以在某处进行一些切换。否则,直接的方法可能类似于

    using (var context = new DomainEntities())
    {
        var FirstPart = context.Users.Where(u => u.LastName != null);
        var SecondPart = context.Users.Where(u => u.LastName == null);
        var Result = FirstPart.Union(SecondPart);
    }

3
投票
var result = context.Users.OrderBy(x => x.FirstName ?? x.LastName);
© www.soinside.com 2019 - 2024. All rights reserved.