Если все ваши строки, содержащие даты, используют один и тот же формат даты, вы можете просто упорядочить их по строковому значению. Но поскольку самый распространенный (т.е. английский) формат даты НЕ начинается с года, это может оказаться проблематичным.
Опция A .: Сортировка в памяти.
var records = db.YourTable.Where(o=>o.Discriminator =="date").AsEnumerable()
.Select(o=>new {Entity= o, Date=DateTime.Parse(o.YourColumn)})
.OrderBy(o.Date).Select(o=>o.Entity);
НЕ делайте этого, если у вас много строк, или если вам нужно, по крайней мере, иметь порядочность для кэширования упорядоченного результата ...
Вариант B .: Магия базы данных
Добавьте дополнительный столбец в вашу БД, сделайте дату THAT (обнуляемой) и обновите ее, если дискриминатором является дата. Вы можете обновить его в (DML) Trigger или из C # ...
ИЛИ, если преобразование простое, вы можете создать представление из него ...