簡體   English   中英

LINQ查詢的多個條件

[英]Multiple criteria for LINQ query

我正在嘗試創建一個LINQ查詢,該查詢將使用來自兩個不同列的條件過濾掉數據。

我試圖僅當從Section_Data列滿足特定的字符串值時,才從Time_Data_1列獲取兩個日期之間的數據,即在2016/5/152016/6/16之間,當SelectedOption = Something這就是我所擁有的不工作。

 DataGridOne.DataContext = sql.Time_TBLs.Where(item =>
                item.Time_Data_1 < new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 15) &&
                item.Time_Data_1 > new DateTime(DateTime.Now.Year, DateTime.Now.Month, 16) &&
                item.Section_Data == SelectedOption);

以下查詢適用於在兩個日期之間獲取數據的單一條件。 但是它會收集這些日期之間的所有數據。

Column1.DataContext = sql.Time_TBLs.Where(item =>
                    item.Time_Data_1 < new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 15) &&
                    item.Time_Data_1 > new DateTime(DateTime.Now.Year, DateTime.Now.Month, 16)

如何在查詢中添加第二個條件?

編輯:錯字,當我放&時應該&&

您遇到任何特定的錯誤/問題嗎?

就代碼而言,我想說的可能是BODMAS和按位&運算符。 閱讀有關用法和與&&的更多信息

同時,此代碼對您有用嗎?

DataGridOne.DataContext = sql.Time_TBLs.Where(item =>
(item.Time_Data_1 < new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 15) &&
item.Time_Data_1 > new DateTime(DateTime.Now.Year, DateTime.Now.Month, 16)) &&
item.Section_Data == SelectedOption);

PS:使用純DateTime時,我發現對日期進行17而不是16更容易。 由於所有時間均默認為00:00:0000,因此,如果您具有16/06/2016 07:05:0000之類的數據,則不會從檢查DateTime.Day為16的查詢中取回該數據。

條件語句是錯誤的。 您想在兩個日期(即2016/05/152016/06/16之間)之間進行過濾,但您的條件表明您希望少於2016/05/15並大於2016/06/16

您的代碼應如下所示。

DataGridOne.DataContext = sql.Time_TBLs.Where(item =>
item.Time_Data_1 > new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 15)
&& item.Time_Data_1 < new DateTime(DateTime.Now.Year, DateTime.Now.Month, 16) 
&& item.Section_Data == SelectedOption);

暫無
暫無

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

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