我正在使用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语句正常工作?我尝试过||和一个&&到位,但是它不起作用,我陷入了这个查询。

基本上,它应该返回一个月之内的天数列表,在MyModel中,我确实会计算在内。例如,在一个列中,我计算在给定日期设置的约会数量,在另一列中,我计算在同一天参加的约会数量。 Date1是指约会的设置日期,Date2是指约会的约会日期。因此,例如,在2011年3月3日,我设置了4个约会(对于这些约会,Date1是3/11/2011),并且它们被设置为将来的各个日期(Date2)。在同一日期(这次3月3日是Date2),我还参加了过去在其他日期设置的其他约会。

感谢您的任何建议。

最佳答案

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更改为||。

10-08 09:15