簡體   English   中英

LINQ 查詢結果中的奇怪值

[英]Strange value in LINQ query result

在我的報告頁面上的應用程序中,我有多個過濾器(開始日期、結束日期、付款類型等),我想根據用戶選擇生成一個查詢,如下所示:

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);
    }

結果總是什么都沒有!!,當我檢查查詢結果時,我在 WHERE 子句中發現了奇怪的值@p__linq__0

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

我的錯誤是什么?

即使它不應該有所作為,您可能希望在傳遞給構造函數之前先實現查詢。

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)

一般來說,問題可能是您沒有滿足條件的行,因此您得到空結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM