2011-01-19 2 views
2

私は日付を含むオブジェクトMyObjectを持っています。毎日一度だけ発生するように、私はグループに結果が欲しいlinqグループステートメント

var MyQuery = from a in MyModelDC.MyTable 
       where a.Month == TheMonth 
       where a.Year == TheYear 
       select new MyObject 
        { 

         var1 = a.Day, 

         var2 = (from b in MyModel.MyTable 
           where b.Month == a.Month 
           where b.Year == a.Year 
           select b.Identity).Count() 
        }; 

: 私はTheMonthとTheYearはパラメータであり、次のクエリを持っています。変数2はカウントであり、現時点では、1日あたりユニークではなく、アイデンティティが発生するたびにカウントの行が繰り返されます。

ありがとうございました。

答えて

3

私が正しくあなたの要件を理解していれば、私は、これはあなたが聞いて何をすると思います。

var myQuery = from date in MyModelDC.MyTable 
       where date.Month == TheMonth && date.Year == TheYear 
       group date by date.Day into dayGroup 
       select new 
       { 
        Day = dayGroup.Key, 
        Count = dayGroup.Count() 
       }; 

それが参照する日までにここで最初のグループの各項目、なるように我々はグループ内の各項目を数えますそのグループの特定の日のアイテムのみを含めます。

更新
出力としてMyObjectにを使用するには、この操作を行うことができます。

var myQuery = from date in MyModelDC.MyTable 
       where date.Month == TheMonth && date.Year == TheYear 
       group date by date.Day into dayGroup 
       select new MyObject 
       { 
        var1 = dayGroup.Key, 
        var2 = dayGroup.Count() 
       }; 
+0

[OK]を、私はコンセプトを取得します。 MyObjectをどのように抽出するのですか? – frenchie

+0

dayGroupに使用できる.Keyプロパティはありません。dayGroupsのみです。明確にすることはできますか? – frenchie

+0

@frenchie:私の間違い - 修正された編集を見てください。私は答えて、私の答えを確認することを忘れました。謝罪します。 'MyObject'を抽出する際には、必要なものがあれば、いつも私の' select'ステートメントをあなたが持っていたものに置き換えることができます。 –