我正在使用linq-to-sql进行如下查询:
public static List<MyModel> GetData(int TheUserID, DateTime TheDate)
using (MyDataContext TheDC = new MyDataContext())
{
var TheOutput = from a in TheDC.MyTable
where a.UserID == TheUserID
(where a.Date1.Month == TheDate.Month && where a.Date1.Year == TheDate.Year)
OR
(where a.Date2.Month == TheDate.Month && where a.Date2.Year == TheDate.Year)
group a by a.Date1.Date AND by a.Date2.Date into daygroups
select new MyModel{...};
如何编写此代码以使OR和AND语句有效?我试过放一个||和&amp;&amp;到位,但它不起作用,我坚持这个查询。
基本上,它应该在一个月内返回一个天的列表,而在MyModel中,我确实很重要。例如,在一列中,我计算在给定日期和另一列中设定的约会数量,我计算在同一天参加的约会数量。 Date1指的是约会的设定日期,Date2指的是约会的参与日期。例如,在2011年3月3日,我已经设置了4个约会(Date1是2011年3月11日),并且它们将在未来的各个日期设置(Date2)。在同一天(3月3日是这次的第2天),我还参加了过去在其他日期设定的其他几个约会。
感谢您的任何建议。
答案 0 :(得分:3)
using (MyDataContext TheDC = new MylDataContext())
{
var TheOutput = from a in TheDC.MyTable
where a.UserID == TheUserID &&
(a.Date1.Month == TheDate.Month && a.Date1.Year == TheDate.Year)
||
( a.Date2.Month == TheDate.Month && a.Date2.Year == TheDate.Year)
group a by a.Date1.Date AND by a.Date2.Date into daygroups
select new MyModel{...};
尝试删除4个额外的“where”并将OR更改为||。