Рейтинг:
2
Richard Deeming
Существует несколько вариантов, которые вы можете использовать для поиска записей без загрузка всей таблицы в память.
Например, этот метод работает и будет использовать преимущества индекса в столбце даты:
DateTime date = new DateTime(2016, 8, 6);
DateTime nextDay = date.AddDays(1);
var entity = context.Table.FirstOrDefault(x => x.Datefield >= date && x.Datefield < nextDay);
Этот не сможет использовать индекс, но все равно будет работать:
DateTime date = new DateTime(2016, 8, 6);
var entity = context.Table.FirstOrDefault(x => DbFunctions.TruncateTime(x.Datefield) == date);
Рейтинг:
14
Karthik_Mahalingam
пробовать
string inputdate = "2016-08-16";
var val = context.Table.ToList().Where(k => k.DateField.ToString("yyyy-MM-dd") == inputdate).FirstOrDefault();
пожалуйста, обратитесь к решению Ричарда для альтернативного и эффективного способа достижения этой цели
1Future
Привет , спасибо, что уделили мне время.. теперь я получаю следующую ошибку LINQ to Entities не распознает систему метода.String ToString(System.String)' метод, и этот метод не может быть переведен в выражение хранилища.
Karthik_Mahalingam
Дата-это строка или типа datetime ?
Karthik_Mahalingam
string inputdate = "2016-08-16";
context.Table.ToList().Where(k => k.DateField.ToString("yyyy-MM-dd") == inputdate).FirstOrDefault();
1Future
Привет , я упускаю что-то отличное от первого решения, которое вы предоставили? К сожалению, я все еще получаю ту же ошибку
Karthik_Mahalingam
.Список()
1Future
Спасибо .. теперь он работает
Karthik_Mahalingam
добро пожаловать
Richard Deeming
Извините, но это похоже на ... ужасный идея!
Вы извлекаете весь набор данных в память, а затем преобразуете дату в строку, чтобы сравнить ее.
Есть гораздо лучшие подходы, которые вы можете использовать. :)
Karthik_Mahalingam
Да, я знаю об этом. Я думал с точной точки зрения вопроса.. мое решение также не будет работать для сравнения дат, ОП был обеспокоен точной датой, поэтому опубликовал это..
Я уже упоминал, чтобы сослаться на ваше решение, которое помогло бы ему или кому-либо в будущем, кто посещает эту тему.
Спасибо, что указал..