2

次のフィールドを持つテーブルがあります。

public int S_ID       
public DateTime S_Date            
public string S_Month        
public string S_Overtime    
public string S_WorkingTime

したい(Orderby S_Date)、、、そして Binding を使用して ListBox に表示してい(GroupBy S_Month)ます(SUM S_Overtime)(SUM S_Workingtime)

以下のコードは機能しますが、残業時間も勤務時間も合計しません。

var manader = (from c in db.nys
               orderby c.S_Date ascending
               select c).GroupBy(g => g.S_Month).Select(x => x.FirstOrDefault());
listBox.ItemsSource = manader;
4

2 に答える 2

4

と にどのようなデータがあるかはわかりませんが、これは の文字列表現であるS_WorkingTimeS_Overtime仮定しますint:

var manader = from c in db.nys
              group c by c.S_Month into g
              select new { 
                    Month = g.Key, 
                    Overtimes = g.Sum(x => Int32.Parse(x.S_Overtime)),
                    WorkingTimes = g.Sum(x => Int32.Parse(x.S_WorkingTime)) 
              };

ところで、アイテムを で並べ替えるのは意味がないと思います。S_Dateなぜなら、アイテムを でグループ化しS_Month、集計値を使用するからです。

于 2012-10-15T17:59:23.307 に答える
1
db.nys.OrderBy(o => o.S_Date)
    .GroupBy(o => o.S_Month)
    .Select(g =>
        new
        {
            Overtime = g.Sum(v => v.S_Overtime),
            Workingtime = g.Sum(v => v.S_Workingtime)
        }
    )
于 2012-10-15T18:01:25.117 に答える