2011-03-03 2 views
2

私はこのようなクエリのLINQツー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ステートメントの仕事をするためにこれを書いどうすればよいですか?私は||と& &がありますが、うまくいきません。私はこの質問に固執しています。

基本的に1ヶ月以内の日数のリストを返し、MyModelではカウントします。たとえば、ある列では、ある日に設定された予定の数を数え、別の列では、同じ日に出席した予定の数を数えます。 Date1は、予定が設定されている日付を示し、Date2は、予定に参加した日付を示します。たとえば、2011年3月3日に、私は4つの予定を設定しました(Date1は2011年3月11日です)、将来のさまざまな日付(Date2)に設定されています。同じ日(3月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{...}; 

余分な "where"を削除し、ORを||に変更してみてください。

+0

私はそれを試みました、そして、それはまだ赤いところです。私はまだ試しています。 – frenchie

+0

これで、余分なwhereステートメントを削除するということになりました。ここで、赤い下線はグループ文がどこにあるかです。 ANDステートメントでどのようにグループ化しますか? – frenchie

+0

"グループ化"が間違っています。それはちょうど "AND"という言葉を含んでいます。複数のものでグループ化する場合は、「new {a = ..、b = ...}」を使用し、匿名タイプでグループ化します。 – vcsjones

関連する問題