如何在一个datagridview中计算每列的非空行并在第二个datagridview中显示行数?

时间:2019-05-27 08:27:01

标签: c# database datagridview oledb

我有2个datagridviews:

1-显示数据库中的数据。

2-必须在第一个datagridview中显示每列的非空行数。

我尝试了这段代码,但是它计数了每一行:

     var count = dataGridView1.Rows.Cast<DataGridViewRow>().Where(row => !(row.Cells[0].Value == null || row.Cells[0].Value == DBNull.Value)).Count();

第二个datagridview必须显示不同的非空行。

请帮助解决此问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

            var count = Enumerable.Range(0, dataGridView1.Columns.Count) 
                .Select(x => new { column = x, count = dataGridView1.Rows.Cast<DataGridViewRow>().Where(row => !(row.Cells[x].Value == null || row.Cells[x].Value == DBNull.Value)).Count() })
                .ToList();

使用数据表

            var count1 = Enumerable.Range(0, dt.Columns.Count)
                .Select(x => new { column = x, count = dt.AsEnumerable().Where(row => row[x] != DBNull.Value).Count() })
                .ToList();

使用结果创建数据表

            var count1 = Enumerable.Range(0, dt.Columns.Count)
                .Select(x => new { column = x, count = dt.AsEnumerable().Where(row => row[x] != DBNull.Value).Count() })
                .ToList();

            DataTable dt2 = new DataTable();
            dt2.Columns.Add("Column Name", typeof(string));
            dt2.Columns.Add("Count", typeof(int));

            foreach (var count in count1)
            {
                dt2.Rows.Add(new object[] { dt.Columns[count.column].ColumnName, count.count }); 
            }