DataGridView使用c#成为Linq的ReadOnly
我正在使用带有entity framework工作的C#(Windows窗体)和Linq实现一个系统。
使用普通linq语句时, DataGridView
运行良好,但当我使用“Join”时, 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();
这是因为匿名类型的性质是只读的。
匿名类型(C#编程指南)
匿名类型提供了一种将一组只读属性封装到单个对象中的便捷方法,而无需先显式定义类型。
要克服此限制,您可以创建自己的类,并使用您自己的类来设置查询的输出。