2016-08-22 14 views
1

を使用して、グループを選択します。ネストされたが、私はLINQの式に次のクエリを変換しようとしていますLINQ

SELECT t1.lastchanged, 
    currentstatus, 
    (SELECT count(ID) 
    FROM [Issues] t2 
    WHERE t2.CurrentStatus = t1.currentstatus and t2.lastchanged <= t1.lastchanged) AS running_total 
FROM [Issues] t1 
GROUP BY t1.lastchanged, currentstatus 
ORDER BY t1.lastchanged 

はこれまでのところ、私は次のことをやった:

var statusCounts = models.GroupBy(x => new { x.CurrentStatus, x.LastChanged }) 
         .Select(g => new { g.Key, Count = g.Count() }) 
         .ToList(); 

任意の提案ですか?

答えて

1

SQLの場合と同じように、ネストされた選択を行うには、modelコレクションから再度選択してください。

var statusCounts = models.GroupBy(x => new { x.CurrentStatus, x.LastChanged }) 
         .Select(g => new 
         { 
          CurrentStatus = g.Key.CurrentStatus, 
          LastChanged = g.Key.LastChanged, 
          Count = models.Count(m => m.CurrentStatus == g.Key.CurrentStatus && 
                 m.LastChanged <= g.Key.LastChanged) 
         }) 
         .OrderBy(item => item.Key.LastChanged); 

またはクエリ構文で:

var statusCounts = from t1 in models 
        group t1 by new { x.CurrentStatus, x.LastChanged } into g 
        orderby g.Key.LastChanged 
        select new 
        { 
         CurrentStatus = g.Key.CurrentStatus, 
         LastChanged = g.Key.LastChanged, 
         Count = models.Count(m => m.CurrentStatus == g.Key.CurrentStatus && 
               m.LastChanged <= g.Key.LastChanged) 
        }; 
+1

パーフェクト!これが私の必要なものです。ありがとう – Hanady

+0

@ハナディ - あなたは非常に歓迎です:) –

関連する問題