使用linq从网格中的列中区分值
本文关键字:中区 linq 网格 使用 | 更新日期: 2023-09-27 18:04:39
我使用下面的查询来查找数据集列的不同值计数。如何查找类似于网格的列。
var distinctRows = (from DataRow dRow in _ds.Tables[0].Rows
select dRow["colName"]).Distinct();
Ok…我仍然不确定为什么要在不请求DataSource的情况下这样做,但是这里有一种方法可以为您指出正确的方向。gv1是GridView
的ID,出于演示目的,我将使用第一列:
string[] rowValues = new string[gv1.Rows.Count];
for (int i = 0; i < gv1.Rows.Count; i++)
{
rowValues[i] = gv1.Rows[i].Cells[0].Text;
}
var distinctRows = (from r in rowValues
select r).Distinct();
这当然是假设每列一个单元格,这可能是一个错误的(或至少是错误的)假设。
刚看到这个,似乎不能使用Linq与ASP。网络导航菜单由Jon Skeet回答,并认为它可能适用于这里的问题。
var distinctRows = (from GridViewRow r in gv1.Rows
select r.Cells[0].Text).Distinct();
感谢Jon的回答,要在这种情况下使用LINQ,您需要通过显式指定项目来Cast
到IEnumerable(因为我愿意打赌GridViewRowsCollection不实现IEnumerable),如上所述。
您的网格可能绑定到数据源,在这种情况下,对数据源使用linq查询比对网格本身使用linq查询更有意义