[英]Multiple criteria for LINQ query
我正在嘗試創建一個LINQ查詢,該查詢將使用來自兩個不同列的條件過濾掉數據。
我試圖僅當從Section_Data
列滿足特定的字符串值時,才從Time_Data_1
列獲取兩個日期之間的數據,即在2016/5/15
和2016/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/15
和2016/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.