Как уже говорили другие в комментариях, количество веских причин хранить ваши даты как varchar в SQL равно нулю.
Вы сказали:
, поэтому они становятся строками в C # в Entity Framework
Как только вы получите дату в C #, вы можете сделать это легко в любом случае сa .ToString()
.
Но ... что касается вашей конкретной ошибки, то она говорит вам, что вы не можете использовать этот метод внутри оператора Entity Framework LINQ. Лучше всего рассматривать операторы LINQ как запросы. Потому что, на самом деле, он должен быть в состоянии преобразовать ваш оператор LINQ в реальный запрос SQL. Вы не можете использовать DateTime.Parse()
внутри SQL-запроса, поэтому он выдает эту ошибку.
Если вы действительно ДОЛЖНЫ хранить свои даты как varchar в базе данных (и опять же, это ужасная идея), тогда яЯ не вижу действительно простого решения. Исходя из этого, я бы сказал вам сначала создать список, а затем просмотреть его:
List<Achievements> res = db.Achievements.ToList();
Затем:
foreach (var achievement in res)
{
if (DateTime.Parse(achievement.DatePerformance) <= DateTime.Today.Date)
{
// do something here
}
}
Но это действительно неуклюжий способ обойтиреальное решение: просто сохраните ваши даты как даты !!!