使用linq从网格中的列中区分值

本文关键字:中区 linq 网格 使用 | 更新日期: 2023-09-27 18:04:39

我使用下面的查询来查找数据集列的不同值计数。如何查找类似于网格的列。

var distinctRows = (from DataRow dRow in _ds.Tables[0].Rows
                    select dRow["colName"]).Distinct();

使用linq从网格中的列中区分值

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查询更有意义

相关文章: