2011-03-03 2 views
2

Я использую LINQ-to-SQL для запроса, как это:где LINQ заявление с ИЛИ

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, я действительно рассчитываю. Например, в столбце я подсчитываю количество назначений, назначенных в данный день, а в другом столбце подсчитываю количество встреч, присутствующих в тот же день. Дата1 относится к дате назначения назначений, а Date2 относится к датам, в которых проводятся встречи. Так, например, 3 марта 2011 года я назначил 4 встречи (для них Date1 - 3/11/2011), и они настроены для разных дат в будущем (Date2). В тот же день (3 марта - Date2 на этот раз), я также присутствовал на нескольких других встречах, которые были установлены в другие даты в прошлом.

Спасибо за любые предложения.

ответ

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 дополнительных «где» и смените OR на ||.

+0

Я пробовал это, и он по-прежнему краснеет почти везде. Я все еще пытаюсь. – frenchie

+0

Хорошо, я получил то, что вы имели в виду, для удаления дополнительных инструкций. Теперь красным подчеркиванием является оператор группы. Как мне группировать с помощью инструкции AND? – frenchie

+0

Неверная команда «Группа». Он просто содержит слово «И». Если вы хотите группировать несколько объектов, используйте «new {a = .., b = ...}» и группируйте их анонимным типом. – vcsjones

Смежные вопросы