Это - большая метрика для, пугать/производить людей впечатление. Это об этом, и определенно контекст, который я вижу во всех трех из тех примеров.
Если я вас правильно понимаю, я думаю, вы хотите этого:
repository.GetParentObjects()
.OrderBy(p => p.Child == null ? "" : p.Child.Name);
LINQ сможет генерировать SQL, который имитирует это выражение.
Я нашел решение, которое в моем случае не идеально опять же было бы определить, когда выражение будет обращаться к дочернему элементу, изменить выражение сортировки на
iif(Child == null,null,Child.Name) ASC
В идеале эту логику можно запечь в динамической библиотеке, я бы предпочел не изменять каждую сетку повсюду для обработки всех случаев это повлияет.
Я не совсем понимаю, в чем проблема (может быть, потому что здесь уже вечер пятницы ...), но нельзя ли отсортировать список следующим образом:
myGrid.DataSource=repository.GetWidgetList()
.OrderBy(w => w.SortField).ToList();
где SortField - это свойство, которое вы хотите отсортировать. Это должно работать, даже если значение равно нулю ...
Извините, если это совершенно не относится к делу ...