Добавить поле суммы для каждой строки агрегата в таблицу данных через LINQ - PullRequest
0 голосов
/ 15 марта 2019

У меня есть две таблицы данных на форме 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.Я много искал, как добавить вычисляемое (суммированное) поле для столбца, но не смог найти в Интернете решение, которое я мог бы использовать в моем случае.Так что любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...