使用Linq查询Datagridview.Rows或Dataset

时间:2015-03-21 09:39:19

标签: c# linq datagridview linq-to-dataset

我有一些问题。由于我对Linq不太熟悉,我无法弄清楚如何查询我的datagridview(或者直接查询数据集)并在另一个datagridview上显示结果。

这是我填充完整数据网格视图和数据集的地方:

string icerikQuery = "SELECT * FROM [RRSelfServis].[dbo].[talimaticerikler] order by [kod] ASC, [percent] DESC";
//MessageBox.Show(icerikQuery);

SqlDataAdapter icerikadapter = new SqlDataAdapter(icerikQuery, connection);
DataSet icerikSet = new DataSet();
icerikadapter.Fill(icerikSet, "Test_table_icerik");
dataGridView2.DataSource = icerikSet;
dataGridView2.DataMember = "Test_table_icerik";

这是我的查询部分:

dataGridView4.DataSource = from DataGridViewRow in dataGridView2.Rows
                              where rowView.Row.Field<string>("kod").Value.ToString() == SomeSearchStringVariable
                              orderby rowView.Row.Field<decimal>("percent") descending
                              select row;

但目前我的dataGridView2.Rows错误:

  

无法找到源类型的查询模式的实现   &#39; System.Windows.Forms.DataGridViewRowCollection&#39 ;. &#39;凡&#39;未找到。   请考虑明确指定范围变量的类型   &#39;一个DataGridViewRow&#39;

我的第一选择是查询DataSet icerikSet,但datagridview也可以。

提前致谢。

1 个答案:

答案 0 :(得分:1)

从您要搜索的DataSet中获取DataTable,将其标记为可枚举,然后选择与您的搜索匹配的行。

var query = from row in icerikSet.Tables[0].AsEnumerable()
            where row.Field<string>("kod").Equals(SomeSearchStringVariable)
            orderby row.Field<decimal>("percent") descending
            select row;

您可以从查询中创建另一个DataSet或DataTable,并将其设置为网格的源。

DataTable dt = query.CopyToDataTable();
[...]