将LINQ查询绑定到DataGridView
发布时间:2020-12-12 08:32:58 所属栏目:MsSql教程 来源:网络整理
导读:这是非常混乱,我使用AsDataView将查询结果绑定到dgv,它可以正常工作如下: var query = from c in myDatabaseDataSet.Diamond where c.p_Id == p_Id select c;dataGridView1.DataSource = query.AsDataView(); 但是,这会导致错误: var query = from item in
这是非常混乱,我使用AsDataView将查询结果绑定到dgv,它可以正常工作如下:
var query = from c in myDatabaseDataSet.Diamond where c.p_Id == p_Id select c; dataGridView1.DataSource = query.AsDataView(); 但是,这会导致错误: var query = from item in myDatabaseDataSet.Items where item.p_Id == p_Id join diamond in myDatabaseDataSet.Diamond on item.p_Id equals diamond.p_Id join category in myDatabaseDataSet.DiamondCategory on diamond.dc_Id equals category.dc_Id select new { Product = item.p_Name,Weight = diamond.d_Weight,Category = category.dc_Name }; dataGridView1.DataSource = query.AsDataView(); 错误: Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Data.DataTable' AsDataView不会在查询中显示(List).为什么会发生这种情况?那么如何将上面的查询绑定到dgv呢? 解决方法AsDataView的签名如下:public static DataView AsDataView( this DataTable table ) 唯一的参数是DataTable. 您拥有的查询将返回一个匿名类型的IEnumerable,该类型不具有隐式转换到DataTable(或者是DataRow个实例的序列,在这种情况下可以使用它来帮助您创建一个DataTable). 您需要将结果返回到DataTable或您可以转换为DataTable的东西,然后它将工作. 在你的具体情况下,您似乎(或者)使用typed DataSets.如果是这样,那么你应该可以获取所选的值,然后创建新的类型化的DataRow实例(应该有你的工厂方法),然后可以将其放入一个可以调用AsDataView的类型化的DataTable中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |