// サブプロシージャ:ロット集計グリッドビューを更新し、数量の最も多いロット番号を返す public string updateLotSummary(DataTable dt) { if (dt.Rows.Count <= 0) { dtLot = new DataTable(); dgvLotSummary.DataSource = dtLot; return(string.Empty); } var query = from e in dt.AsEnumerable() group e by e.Field <string>("lot") into Summary orderby Summary.Count() descending select new { lot = Summary.Key, qty = Summary.Count() }; // グリットビューデータソースの削除と、新データテーブルの生成 dgvLotSummary.DataSource = null; dgvLotSummary.Refresh(); dtLot = new DataTable(); // 列の追加 foreach (var q in query) { dtLot.Columns.Add(q.lot, typeof(int)); } dtLot.Columns.Add("total", typeof(int)); // 行の追加 dtLot.Rows.Add(); foreach (var q in query) { dtLot.Rows[0][q.lot] = q.qty; } dtLot.Rows[0]["total"] = query.Sum(a => a.qty); dgvLotSummary.DataSource = dtLot; return(query.First().lot); }