加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

将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中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读