linq用OR表示

时间:2011-03-03 19:19:12

标签: c# linq linq-to-sql

我正在使用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天),我还参加了过去在其他日期设定的其他几个约会。

感谢您的任何建议。

1 个答案:

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