C# DataGridView通过Linq使用c变成只读#
我正在使用C#(Windows窗体)和实体框架以及Linq实现一个系统 当使用普通linq语句时,C# DataGridView通过Linq使用c变成只读#,c#,winforms,entity-framework,linq,datagridview,C#,Winforms,Entity Framework,Linq,Datagridview,我正在使用C#(Windows窗体)和实体框架以及Linq实现一个系统 当使用普通linq语句时,DataGridView运行良好,但当我使用“Join”时,DataGridView变成只读,我无法编辑任何内容 示例:DataGridView可以很好地处理以下语句: var query = from d in db.Device select d; dgvDevices.DataSource = query.ToList(); 但此查询将使其不可编辑: var query =
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();
这是因为匿名类型的性质是只读的 匿名类型提供了一种封装一组 将只读属性转换为单个对象,而无需显式 首先定义一个类型
要克服这一限制,您可以创建自己的类,并使用自己的类来塑造查询的输出。使用
列表作为数据源
作为数据网格视图
不是一个好主意。您正试图用1D信息(列表
)填充2D控件(DataGridView
)。最符合逻辑的类型是DataTable
。无论如何,这一事实并不能解释您所抱怨的只读问题。PS:今后,请提供您发布代码中所有变量的适当定义。