Подсчитать повторяющиеся значения 1-го столбца в dataGridView в C # - PullRequest
1 голос
/ 22 мая 2019

Я должен добавить полное имя и соответствующий ему счетчик в таблицу данных. Я устанавливаю полное имя до кода ниже. В столбце «Полное имя» повторяются несколько имен.

enter image description here

Чтобы предотвратить это, я реализовал что-то вроде этого:

 bool found = false;
 int nameCount =0;
    if (dataGridView2 != null)
    {
        foreach (DataGridViewRow row in dataGridView2.Rows)
        {
            if (row.Cells[0].Value != null && row.Cells[0].Value.ToString() == fullName)
            {
                found = true;

                break;
            }
        }

        if (!found)
        {

            this.dataGridView2.Rows.Add(new object[] { fullName, nameCount });
        }
    }

Этот код в основном исключает повторение отдельных имен в dataGridView несколько раз и добавляется только один раз.

* +1012 *enter image description here

В моем конечном результате мне нужно что-то вроде следующего. Я пытался увеличить nameCount в нескольких местах, но я не получаю правильный результат.

enter image description here

1 Ответ

0 голосов
/ 22 мая 2019

просто установите nameCount = 1 и увеличьте Count, если found == true

        bool found = false;
        int nameCount = 1;
        if (dataGridView1 != null)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[0].Value != null && row.Cells[0].Value.ToString() == fullName)
                {
                    found = true;
                    row.Cells[1].Value = Convert.ToInt32(row.Cells[1].Value) + 1;
                }
            }
            if (!found)
            {
                dataGridView1.Rows.Add(new object[] { fullName, nameCount });
            }
        }

enter image description here

, если вы хотите сделать это с другимРешение попробуйте это

var list = dataGridView1.Rows.OfType<DataGridViewRow>()
                    .Select(x => x.Cells["FullName"].Value);

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

        foreach (var item in q)
        {
            dataGridView2.Rows.Add(new object[] { item.FullName, item.Count });
        }

Для получения дополнительной информации, проверьте ответ здесь и здесь

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