Странное значение в результате запроса LINQ - PullRequest
0 голосов
/ 25 января 2020

В моем приложении на странице отчетов у меня есть более одного фильтра (дата начала, дата окончания, тип платежа ... и т. Д. c), и я хочу создать запрос в зависимости от выбора пользователя следующим образом:

private void btnSearch_Click(object sender, RoutedEventArgs e)
    {
        if (cboPaymentType.SelectedItem != null)
            _selectedPaymentId = ((PaymentType)cboPaymentType.SelectedItem).id;

        _dateFrom = dpInvoiceFrom.SelectedDate;
        _dateTo = dpInvoiceTo.SelectedDate;

        IQueryable<invoice> invoicesQuery = _context.invoices;

        if (_selectedPaymentId != 0)
            invoicesQuery = invoicesQuery.Where(s => s.payment_id == _selectedPaymentId);

        if (_dateFrom != null)
            invoicesQuery = invoicesQuery.Where(s => s.invoice_date >= _dateFrom);

        if (_dateTo != null)
            invoicesQuery = invoicesQuery.Where(s => s.invoice_date <= _dateTo);

        ocInvoices = new ObservableCollection<invoice>(invoicesQuery);
    }

Результат всегда ничего !! При проверке результата запроса я нашел странное значение @p__linq__0 в предложении WHERE:

WHERE ([Extent1].[invoice_date] >= @p__linq__0)

В чем моя ошибка?

1 Ответ

0 голосов
/ 25 января 2020

Несмотря на то, что это не должно иметь значения, вы, вероятно, захотите материализовать запрос перед передачей в конструктор.

ocInvoices = new ObservableCollection<invoice>(invoicesQuery.AsEnumerable());

или

ocInvoices = new ObservableCollection<invoice>(invoicesQuery.ToList());

Согласно странному значению @p__linq__0. Это параметр запроса, который является частью сгенерированного запроса SQL.

DECLARE @p__linq__0 datetime = {value from local variable};

SELECT
    ...
FROM ...
WHERE ([Extent1].[invoice_date] >= @p__linq__0)

В общем, проблема может заключаться в том, что у вас нет строк, удовлетворяющих условиям, поэтому вы получаете пустой результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...