LINQ Select 多个表字段可写
我是 LINQ 的新手,到目前为止我做得很好,但现在坚持这个。
我有一个绑定到 DataGridView 的 LINQ 对象,让用户编辑包含内容。 对于简单的单表查询来说,它没问题,但是如何构建具有多个表的 LINQ 查询,以便结果仍然是读/写的?
这是我的意思的一个例子:
GMR.Data.GMR_Entities GMR = new GMR.Data.GMR_Entities();
var dt = from Msg in GMR.tblMessages
join lang in GMR.tblDomVals on 1 equals 1//on Msg.pLangueID equals lang.ID
select Msg;
// select new {lang.DescrFr, Msg.Message,Msg.pLangueID } ;
this.dataGridView1.DataSource = dt;
在这个简单的查询中,如果我使用 select 语句仅返回“Msg”,则可以编辑网格。但是如果我用 select new {lang.DescrFr, Msg.Message,Msg.pLangueID } 替换 select 语句;网格将是只读的。 我很容易理解这是由于查询结果是匿名类型造成的。 但是有没有办法让表tblMessage可写呢?
I'm new to LINQ and I'm doing pretty well until now, but now stuck with this.
I've a LINQ object bounded to a DataGridView to let the user edit is contains.
for simple one table query, it go fine, but how to build a LINQ query with multiple table, so the result will still be read/write?
Here a example of what I mean:
GMR.Data.GMR_Entities GMR = new GMR.Data.GMR_Entities();
var dt = from Msg in GMR.tblMessages
join lang in GMR.tblDomVals on 1 equals 1//on Msg.pLangueID equals lang.ID
select Msg;
// select new {lang.DescrFr, Msg.Message,Msg.pLangueID } ;
this.dataGridView1.DataSource = dt;
In this simple query, if I return only "Msg" with the select statement, the grid can be edited. But if I replace the select statement with select new {lang.DescrFr, Msg.Message,Msg.pLangueID } ; the grid will be readable only.
I can easily understand that this is due because the query result is a anonymous type.
But is there a way to let the table tblMessage being writable?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试创建自己的类,例如
并在
select
语句中使用new
创建此类的对象,如下所示这样您就可以避免匿名类型问题。
try creating your own class, for example
And at the
select
statement create an object of this class withnew
like belowThis way you can avoid the anonymous type problem.
您需要选择原始行并显式设置网格列。
You need to select the originals rows and explicitly set the grid columns.