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#编程指南)

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

要克服此限制,您可以创建自己的类,并使用您自己的类来设置查询的输出。