我是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语句替换为select new {lang.DescrFr,Msg.Message,Msg.pLangueID };网格将只是可读的。我很容易理解这是因为查询结果是匿名类型。但是有没有办法让表tblMessage是可写的呢?
发布于 2012-02-10 04:23:10
尝试创建您自己的类,例如
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
} ;这样就可以避免匿名类型问题。
发布于 2012-02-10 04:23:24
您需要选择原始行并显式设置网格列。
https://stackoverflow.com/questions/9217558
复制相似问题