使用c#,DataGridView与Linq成为ReadOnly

时间:2015-09-30 16:48:00

标签: c# winforms entity-framework linq datagridview

我正在使用带有实体框架工作的C#(Windows窗体)和Linq实现一个系统。

DataGridView在使用普通linq语句时效果很好,但是当我使用“加入”时,DataGridView变为只读,我无法编辑任何内容。

示例:DataGridView适用于此语句:

var query = from d in db.Device select d;
        dgvDevices.DataSource = query.ToList();

但此查询无法修改:

var query = from u in db.Users join d in db.Device on u.id equals d.AssignedTo 
            select new { d.id, d.Name, d.OwnerName,
                         d.OwnerPhoneNumber, d.Details, User = u.Name };
dgvDevices.DataSource = query.ToList();

1 个答案:

答案 0 :(得分:2)

这是因为匿名类型的性质是只读的。

  

Anonymous Types (C# Programming Guide)

     

匿名类型提供了一种封装一组的便捷方法   只读属性到单个对象而不必显式   首先定义一个类型。

要克服此限制,您可以创建自己的类,并使用您自己的类对查询输出进行整形。