Member 14634823 Ответов: 1

У меня есть два datagridview первый содержит звонки сделанные сотрудниками я хочу сделать другой содержит количество того что каждый сотрудник сделал индивидуальные звонки


https://i.postimg.cc/6qKk002q/Capture.png[^]

Что я уже пробовал:

var list = dataGridView1.Rows.OfType<DataGridViewRow>().GroupBy(x => x.Cells["Agent Name"]
          .Value).Select(g => new { Value = g.Key, Count = g.Count(), Rows = g.ToList() }).OrderByDescending(x => x.Count);



           var q = from x in list
                   group x by x into g
                   let count = g.Count()
                   orderby count descending
                   select new { Value = g.Key, Count = count };



           foreach (var x in q)
           {
               dataGridView1.Rows.Add(x.Value );


               //dataGridView2.Rows.Add("Agent" + x.Value + "Scour" + x.Count + "Rows");
               //  dataGridView2.Rows.Add(x.Value ,x.Count);

               //
           }

1 Ответов

Рейтинг:
2

Richard Deeming

Вы группируете исходные данные дважды. В результате каждая строка будет иметь количество 1.

Вы также добавляете сгруппированные строки в неправильную сетку, а не добавляете счетчик.

Измените код так, чтобы он группировался только один раз, и добавьте имя и количество во вторую сетку:

var list = dataGridView1.Rows.Cast<DataGridViewRow>()
    .GroupBy(r => r.Cells["Agent Name"].Value, (name, rows) => new { name, Count = rows.Count() })
    .OrderByDescending(g => g.Count);

foreach (var g in list)
{
    dataGridView2.Rows.Add(x.name, x.Count);
}