Не знаю, хорошо ли я понял, о чем вы спрашиваете, но вот мое решение:
return from myclass in classes
let updated = myclass.Updated ?? myclass.Created
orderby updated descending
select myclass;
Протестировано с классом с именем MyClass
:
class MyClass
{
public DateTime? Updated { get; set; }
public DateTime Created { get; set; }
}
И с этими значениями:
MyClass[] classes =
{
new MyClass() { Created = DateTime.Now.AddDays(12)},
new MyClass() { Created = DateTime.Now.AddDays(-5), Updated = DateTime.Now.AddDays(3)},
new MyClass() { Created = DateTime.Now},
new MyClass() { Created = DateTime.Now.AddDays(2), Updated = DateTime.Now.AddDays(10)},
new MyClass() { Created = DateTime.Now},
new MyClass() { Created = DateTime.Now.AddDays(1), Updated = DateTime.Now.AddDays(1)},
new MyClass() { Created = DateTime.Now},
new MyClass() { Created = DateTime.Now.AddDays(20), Updated = DateTime.Now.AddDays(4)}
};
Результат:
Updated = null - Created = 22/03/2011
Updated = 20/03/2011 - Created = 12/03/2011
Updated = 14/03/2011 - Created = 30/03/2011
Updated = 13/03/2011 - Created = 05/03/2011
Updated = 11/03/2011 - Created = 11/03/2011
Updated = null - Created = 10/03/2011
Updated = null - Created = 10/03/2011
Updated = null - Created = 10/03/2011