我有一些问题。由于我对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也可以。
提前致谢。
答案 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();
[...]