2012-02-09 45 views
1

我是新來的LINQ和我做得很好,直到現在,但現在堅持這一點。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語句返回唯一的「消息」,網格可以進行編輯。但是,如果我用select {lang.DescrFr,Msg.Message,Msg.pLangueID}來替換select語句;該網格將只能讀取。 我可以很容易地理解,這是因爲查詢結果是匿名類型。 但有沒有辦法讓表tblMessage可寫?

回答

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

這樣就能避免匿名類型問題。

+0

這不會修改原始表格。 – SLaks 2012-02-09 20:23:40

+0

@SLaks我可能誤解了這個問題,謝謝你的警告。 – Bastardo 2012-02-09 20:25:07

+0

@RoboLover,非常感謝! – Hugo 2012-02-09 20:45:38

0

您需要選擇原始行並明確設置網格列。