GroupBy
private void LoadData() { DataTable dataTable = new DataTable(); dataTable.Columns.Add("key", typeof(string)); dataTable.Columns.Add("value", typeof(decimal)); dataTable.Rows.Add(new object[] { "123", 10 }); dataTable.Rows.Add(new object[] { "123", 50 }); dataTable.Rows.Add(new object[] { "234", 30 }); dataTable.Rows.Add(new object[] { "235", 30 }); dataTable.Rows.Add(new object[] { "236", 30 }); dataTable.Rows.Add(new object[] { "236", 30 }); dataTable.Rows.Add(new object[] { "237", 30 }); dataTable.Rows.Add(new object[] { "237", 30 }); dataTable.Rows.Add(new object[] { "237", 30 }); dataTable.Rows.Add(new object[] { "240", 30 }); dataTable.Rows.Add(new object[] { "240", 30 }); dataTable.Rows.Add(new object[] { "240", 30 }); var list = dataTable.Rows.Cast<DataRow>().GroupBy(d => d.Field<string>("key")).Select(g => new { key = g.Key, value = g.Sum(a=>a.Field<decimal>("value")) }).ToList(); gridControl1.DataSource = list; nMax = list.Count(); pageCount = nMax / pageSize; bindingSource1.DataSource = list; bindingNavigator1.BindingSource = bindingSource1; //gridControl1.DataSource = bindingSource1; }