Необязательное условие Where в запросе

У меня есть приложение, которое выполняет поиск в нашей базе данных (предоставляется через EF) для записей, отвечающих определенным условиям. У нас есть две основные таблицы (работа и получатели). Получатели связаны с таблицей заданий идентификатором задания.

Запись задания имеет различные поля (Дата процесса, Имя, Тип задания). У получателя есть много полей Имя и Идентификатор (например, Номер счета, Фамилия и т. Д.)

Я хочу представить экран поиска, где они видят список полей для поиска. Затем код ASP.net видит, в какие текстовые поля набрал (или выбрал) пользователь, и на основании этого строит запрос.

Я просто пытаюсь найти наиболее эффективный способ.

Грубая логика это:

    if not string.isnullorempty(txtName.text) then
        'Query.Where.Add clause = " AND Name like '@txtName'
        'Query.WhereParameters.Add("@txtName",txtNAme.text
    end if

if not string.isnullorempty(txtAccountNumber.text) then 

.....etc


 if not string.isnullorempty(txtFromDate.text) then..

Я застрял в том, чтобы выяснить, как добавить дополнительные предложения where. Должен ли я просто использовать Entity SQL?

Может ли это также возвращать строго типизированные объекты EF? И возможно ли вернуть объекты Jobs и Recipients?

например, если я выбрал получателя., рабочие места. from.... бла бы это правильно проанализировал и вернул связанные объекты Recipient и Job?

1 ответ

Решение

Если вы начинаете со строго типизированного нефильтрованного запроса, вы можете добавить фильтры, используя Queryable.Where,

Name = txtName.Text
If Not String.IsNullOrEmpty(Name) Then
    Query = Query.Where(Function(j) j.Name.Contains(Name))
End If

Если ваш нефильтрованный запрос правильно связывает несколько записей, эти ссылки будут сохранены при добавлении фильтра.

(Отказ от ответственности: я обычно не использую VB.NET; могут быть глупые синтаксические ошибки, но вы должны быть в состоянии понять общую идею.)

Другие вопросы по тегам