Ejemplo n.º 1
0
        // サブプロシージャ:ロット集計グリッドビューを更新し、数量の最も多いロット番号を返す
        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);
        }