使用 Linq 查询 Datagridview.Rows 或数据集

Query a Datagridview.Rows or Dataset using Linq

我有一些问题。由于我对 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 的错误:

Could not find an implementation of the query pattern for source type 'System.Windows.Forms.DataGridViewRowCollection'. 'Where' not found. Consider explicitly specifying the type of the range variable 'DataGridViewRow'.

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

提前致谢。

从要搜索的数据集中取出数据表,将其标记为可枚举,然后select匹配您的搜索的行。

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();
[...]