У меня есть две таблицы данных на форме win (C #), которые показывают примерно одинаковые данные, где левая группа сгруппирована по клиенту, а правая показывает (все) строки.Я использую datatable в качестве источника данных и заполняю его, выбирая данные из MSSQL.
Поскольку данные одинаковы, я хотел бы повторно использовать таблицу данных и попытаться выполнить группировку через LINQ в левом просмотре данных.Все работает, как и ожидалось, за исключением одного дополнительного столбца, который я хотел бы добавить в левое представление данных, в котором есть сумма строк на одного клиента.Обычно я делаю это в операторе SQL, но так как мне нужны все строки в datatable, я должен найти другой путь.
Это то, что я имею до сих пор.
private void load_dgv_grouped()
{
DataTable dtRecord_head = new DataTable();
dtRecord_head.Clear();
conn.ConnectionString = GlobalVar.fCurrentSQLCon;
conn.Open();
string qry = "SELECT * FROM xxx.._f_so_select(@nm)";
SqlCommand command = new SqlCommand(qry, conn);
command.Parameters.AddWithValue("@nm", tb_so_search_cust.Text);
sqlDataAdap = new SqlDataAdapter(command);
commandBuilder = new SqlCommandBuilder(sqlDataAdap);
conn.Close();
sqlDataAdap.Fill(dtRecord_head);
//this is the grouped datatable
DataTable dt = new DataTable();
dt = dtRecord_head.AsEnumerable()
.GroupBy(r => new { Col1 = r["CustNr"], Col2 = r["CustNm"] })
// needed for the order by
.Select(g => g.OrderBy(r => r["CustNm"]).First())
.OrderBy(d => d["CustNm"])
.CopyToDataTable()
// select only certain columns for this dt
.DefaultView.ToTable(false, "CustNr", "CustNm");
// here the actual datasource is set for the datagridview,
// as well as some other stuff that I do on all datagridviews
m.set_datagridview(dgv_so_head, dt, 1, this);
// load the data into the second datagridview
load_dgv_lines(dtRecord_head);
}
Исходная таблица данных содержит столбец с именем NrOfRows, и я хотел бы добавить поле, показывающее сумму по CustNr.Я много искал, как добавить вычисляемое (суммированное) поле для столбца, но не смог найти в Интернете решение, которое я мог бы использовать в моем случае.Так что любая помощь будет оценена.