Vi(ky Ответов: 3

Выполните поиск по дате с помощью entity framework


Я пытаюсь сделать поисковый запрос в Entity framework. У меня есть таблица Project с 'Id', 'ProjectName', 'Description' и "modificationdate" и т. д. Я хочу выполнить поиск по 'projectname', 'Description' и "modificationdate". Я успешно выполняю поиск по 'ProjectName' & 'Description', но я не знаю, как выполнить поиск по дате

var found = from n in context.Project
                            where n.projectName.Contains(SearchKey) ||                                                               n.description.Contains(SearchKey) 
                        select n;



Пожалуйста, Помогите!

3 Ответов

Рейтинг:
2

Sampath Lokuge

Вы можете использовать как показано ниже:

var found = from n in context.Project
                            where n.projectName.Contains(SearchKey) ||                                                               n.description.Contains(SearchKey) || n.modificationdate.ToShortDateString().Contains(EntityFunctions.TruncateTime(SearchKey))
                        select n;


Я надеюсь, что это поможет вам.


Vi(ky

Н.modificationdate.Содержит не occuer

Sampath Lokuge

что вы имеете в виду, говоря не occuer ?

Vi(ky

.Contains опция подходит для использования его при вводе кода

Sampath Lokuge

Я обновился. Пожалуйста, проверьте это.

Vi(ky

ошибка: "лучший перегруженный метод соответствует 'string.Contains(string)' имеет некоторые недопустимые аргументы"

Sampath Lokuge

Можете ли вы поставить свой последний запрос на свой пост ?

Vi(ky

public IEnumerable<Project> SearchByKey(строка SearchKey)
{
var context = новые MyDbEntities();

var matches = from m in context.Project
где m.имя проекта.Содержит(SearchKey) || m.описание.Содержит(SearchKey) || m.modificationDate.ToShortDateString().Contains(EntityFunctions.TruncateTime(SearchKey))
выберите m;
ответный матч;
}

Sampath Lokuge

Каково ваше значение "SearchKey", когда у вас есть вышеуказанная ошибка ? и почему вы не использовали ' ToShortDateString()' ?

Vi(ky

Ошибка: не удается преобразовать из 'System.DateTimeOffset?' в 'string' , а значение searchkey равно 12/01/2012

Sampath Lokuge

Я не мог понять, что ты говоришь.Можете ли вы дать дополнительную информацию ?

Sampath Lokuge

Передается ли 12/01/2012 как строка или дата-время ?

Vi(ky

в виде строк

Sampath Lokuge

Посмотрите на это :http://mrclyfar.blogspot.com/2011/07/tip-for-writing-entity-framework.html

Sampath Lokuge

Еще один :http://forums.asp.net/t/1848300.aspx

Рейтинг:
2

Member 14788967

прежде всего, ваша дата и время отправки должны включать в себя .Ключевое слово Date это делает ваше время до 1200 или 0000000
как это

ent.Receiving_Date = dateTimePicker1.Value.Date;


В базе данных это будет выглядеть так
2020-04-01 00:00:00.000

Теперь вы собираетесь искать или фильтровать данные по базе даты, то вы также будете давать .Дата здесь с datetimePicker, как указано ниже ;

var dd=db.tbl_Doner.Where(x => x.Receiving_Date==dateTimePicker1.Value.Date).ToList();
dataGridView1.DataSource = dd;



Я надеюсь, что это сработает
Я получил его примерно за полчаса до отправки вам, потратив на это много времени.Во время поиска я нашел вышеописанные ответы, но не работал в первом приближении EF.so желаю удачи


Рейтинг:
1

Code Help 2014

Проверьте этот пример приложения:

Entity Framework для начинающих[^]