c # datagridview «если» условие для подсчета на основе предыдущего столбца не работает - PullRequest
0 голосов
/ 05 октября 2018

Я все еще ac # новичок, я пытаюсь подсчитать, сколько '1' находится в status_id, а затем подсчитать dept_id с 1, 4 или 5 на основе status_id. Таким образом, по сути, status_id, если «1» означает, что этооткрыто, я хочу знать его открыть в котором отдел.Но условие if не работает.

private void button2_Click(object sender, EventArgs e)
{
    var count = this.dataGridView1.Rows.Cast<DataGridViewRow>()
       .Count(row => row.Cells["status_id"].Value.ToString() == "1");

    if (dataGridView1.Rows[count - 1].Cells["status_id"].Value.ToString() == "1")
    {
        var general = this.dataGridView1.Rows.Cast<DataGridViewRow>()
       .Count(row => row.Cells["dept_id"].Value.ToString() == "1");
        this.textBox2.Text = general.ToString();
    }

Это пример кода для первой части 'general', а остальное одинаково для 'finance' и 'tech'

Example of script

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Давайте попробуем это.

private void button2_Click(object sender, EventArgs e)
{
    //get all rows in your dataGrid that have a 1 in status_id
    var foundRows = this.dataGridView1.Rows.Cast<DataGridViewRow>().Where(row => row.Cells["status_id"].Value.ToString() == "1");

    //get the count of the found rows
    var count = foundRows.Count(); 

    //in the foundRows search further/deeper for rows that have a 1 in dept_id - this will give rows that have both status_id = 1 AND dept_id = 1
    var foundChildRows = foundRows.Where(row => row.Cells["dept_id"].Value.ToString() == "1");

    //get the count of the found"Child"Rows
    var childCount = foundChildRows.Count();
    this.textBox2.Text = childCount.ToString();
}
0 голосов
/ 05 октября 2018

Ваша логика кажется мне странной: в первой строке вы считаете строки со статусом, равным 1. Например, вы находите 3 строки с таким статусом.

Затем вы получаете строку в позициичисло найденных (так что в моем примере вы получите 3-ю строку), и если статус этой строки равен 1, вы выполняете код в блоке if (считайте все строки с dept_id, равным 1).

Я не совсем понимаю, что вы пытаетесь сделать, но я думаю, что вы не хотите ссылаться на n-ую строку, где n основано на подсчете состояния?

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