Toolroom Tech Blog

Devlopers Digest

Linq: Order by Null last

How to order null elements to the bottom with Linq

Sometimes you might to order values, where Null values should go to the bottom of the result. To achieve this, just use the following:

myObjects.OrderBy(_ => _.Value == null).ThenBy(_ => _.Value);

 

LINQes Ding

LINQ debuggen

Es soll ja vorkommen, dass sich unerklärbare Exceptions in Linq Statements einschummeln.

from contact in Contacts
    where contact != null && !string.IsNullOrEmpty(contact.DisplayName)
    group contact by contact.DisplayName[0]
    into c
    orderby c.Key
    select new Group<Contact>(c.Key.ToString(), c);

Das Helferlein:

Um das Debugging etwas zu erleichtern, ändern wir die Query in die (von mir bevorzugte :)) Method Chain Notation. Jetzt können wir ein simples Select einbauen und den Breakpoint reinsetzen und voila ... wir haben Zugriff auf die Items.

Contacts.Where(contact => contact != null && !string.IsNullOrEmpty(contact.DisplayName))
.Select(item =>
            {
                return item;
            })
.GroupBy(contact => contact.DisplayName[0])
.OrderBy(c => c.Key)
.Select(c => new Group<Contact>(c.Key.ToString(), c));