Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ Select具有多个可写表字段_Linq_Readonly - Fatal编程技术网

LINQ Select具有多个可写表字段

LINQ Select具有多个可写表字段,linq,readonly,Linq,Readonly,我是LINQ的新手,到目前为止我做得很好,但现在我坚持这一点 我有一个绑定到DataGridView的LINQ对象,允许用户编辑它所包含的内容。 对于简单的单表查询,这很好,但是如何用多个表构建LINQ查询,这样结果仍然是读/写的 下面是我的意思的一个例子: GMR.Data.GMR_Entities GMR = new GMR.Data.GMR_Entities(); var dt = from Msg in GMR.tblMessages join

我是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可写呢?

例如,尝试创建自己的类

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 
                       } ;

这样可以避免匿名类型问题。

您需要选择原始行并显式设置网格列。

这不会修改原始表。@SLaks我可能误解了问题,谢谢您的警告。