繁体   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