LINQ Select с возможностью записи в несколько полей таблицы - PullRequest
1 голос
/ 09 февраля 2012

Я новичок в 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;

В этом простом запросе, если я верну только «Msg» с оператором select, сетку можно редактировать. Но если я заменю оператор select на select new {lang.DescrFr, Msg.Message, Msg.pLangueID}; сетка будет только для чтения. Я легко могу понять, что это связано с тем, что результат запроса является анонимным. Но есть ли способ сделать таблицу tblMessage доступной для записи?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Вам необходимо выбрать строки оригиналов и явно установить столбцы сетки.

0 голосов
/ 10 февраля 2012

попробуйте создать свой собственный класс, например

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

Таким образомВы можете избежать проблемы анонимного типа.

...