我是LINQ的新手,直到现在我做得还不错,但现在已经坚持了。
我有一个LINQ对象绑定到DataGridView以允许用户编辑包含。 对于简单的一个表查询,它没问题,但是如何用多个表构建一个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可写?
答案 0 :(得分:0)
尝试创建自己的类,例如
public class MsgLangInfo
{
public string langDescFr{get;set;}
public int pLangueID{get;set;}
}
在select
语句中,使用new
创建此类的对象,如下所示
select new MsgLangInfo {
langDescFr = lang.DescrFr,
langDescFr = Msg.Message,Msg.pLangueID
} ;
这样可以避免匿名类型问题。
答案 1 :(得分:0)
您需要选择原始行并明确设置网格列。