Я реализую простой поиск. Прямо сейчас, я могу искать сообщения, используя термины в строковом массиве Split, но я хочу найти дату также. Итак, я добавил массив datetime. Проблема, с которой я столкнулся, заключается в том, что я хочу искать только часть даты в datetime и игнорировать Time. Всякий раз, когда я ищу, я получаю ошибку в d.Date.
IEnumerable<Post> posts = from p in post_repository.Posts
from s in split
from d in Date
where (p.Title.Contains(s) || p.ContactPhone.Contains(s) || p.Content.Contains(s) || p.Author.Contains(s) || p.ContactEmail.Contains(s)|| **p.EndDate.Date.Equals(d.Date)**) && p.Deleted == false && p.Publish == true
select p;
Сообщение об ошибке:
The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NotSupportedException: The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
Я застрял в этом некоторое время, кто-нибудь может понять, что я делаю неправильно?
Все даты инициализированы, поэтому нет ничего нулевого, и все, кроме даты, работает. Если я удаляю d.Date или EndDate.Date, ошибки не возникает, но я не получаю желаемого результата.
Заранее спасибо.
Редактировать 1:
string[] split = query.Split(breakpoints);
DateTime[] arrayOfDateTimes = Datify(split);
Декларация может показаться очень глупой. Datify - это функция, которую я написал, которая возвращает массив DateTime, который работает должным образом, потому что я прошел его шаг за шагом, просматривая локальные переменные.
private readonly char[] breakpoints = {'.', ',', ' ', ':', '\t' };
Запрос - это поиск, это строка.