C# 使用linq将值与网格中的列区分开来

C# 使用linq将值与网格中的列区分开来,c#,asp.net,linq,C#,Asp.net,Linq,我使用下面的查询从数据集列中查找不同的值计数。如何找到类似于网格列的 var distinctRows = (from DataRow dRow in _ds.Tables[0].Rows select dRow["colName"]).Distinct(); 您的网格可能绑定到数据源,在这种情况下,对数据源使用linq查询比对网格本身使用linq查询更有意义。好吧。我仍然不确定您为什么要在不重新查询数据源的情况下执行此操作,但这里有一种方法可以为您指明

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

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

您的网格可能绑定到数据源,在这种情况下,对数据源使用linq查询比对网格本身使用linq查询更有意义。

好吧。我仍然不确定您为什么要在不重新查询数据源的情况下执行此操作,但这里有一种方法可以为您指明正确的方向。gv1是您的
网格视图的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();

根据Jon的回答,在这种情况下,要使用LINQ,您需要通过显式指定项来
转换为IEnumerable(我敢打赌GridViewRowsCollection不会实现IEnumerable),如上所述。

您的网格是如何填充的?它是绑定到DataTable还是ObjectDataSource?绑定到dataset。但我不能在数据集中使用查询来获得不同的值,因为它会影响我的一个场景。我不确定是否有足够的信息给您一个好的答案。什么情况会阻止您对数据集使用查询?我将通过其他网格向数据集添加一些值,如果出现任何异常,则只更新少数记录,然后我需要检查网格中的值的唯一性。您可以发布您的代码吗?在我看来,您应该能够检查网格的唯一性,但可能我没有得到代码可能会更清楚的东西。该数据集将通过网格再次更新,我有一个场景,其中只有少数值被更新,其余值不会更新到数据集。所以我只需要通过Grid进行查询,如果有任何其他建议?
var distinctRows = (from GridViewRow r in gv1.Rows
                    select r.Cells[0].Text).Distinct();