我正在使用带有实体框架工作的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();
答案 0 :(得分:2)
这是因为匿名类型的性质是只读的。
Anonymous Types (C# Programming Guide)
匿名类型提供了一种封装一组的便捷方法 只读属性到单个对象而不必显式 首先定义一个类型。
要克服此限制,您可以创建自己的类,并使用您自己的类对查询输出进行整形。