присоединяйтесь, используя лямбда-выражения и получая данные - PullRequest
1 голос
/ 13 сентября 2011

У меня есть members таблица с колонками

  member_Id,
  member_Lastname,
  member_Firstname,
  member_Postcode,
  member_Reference,
  member_CardNum,

и у меня есть другая таблица mshipoptions со столбцами

mshipoption_id
mshiptype_id

и у меня есть еще один стол mshiptypes

 mshiptype_id
 mshiptype_name

другой стол memtomship

 memtomship_id
 mshipoption_id
 member_id

и меня зовут eclipse

при загрузке формы я заполняю представление таблицы данных, используя следующий метод ....

private void reportmembers()
{
        MemberControlHelper.Fillmembershiptypes(cbGEMembershiptype); 
        var membersreport = from tsgentity in eclipse.members
                                join memtomships in eclipse.membertomships on tsgentity.member_Id equals memtomships.member_Id
                                join mshipoptiions in eclipse.mshipoptions on memtomships.mshipOption_Id equals mshipoptiions.mshipOption_Id
                                join mshiptypes in eclipse.mshiptypes on mshipoptiions.mshipType_Id equals mshiptypes.mshipType_Id
                                select 
                                new {                                     
                                    tsgentity.member_Id,
                                    tsgentity.member_Lastname,
                                    tsgentity.member_Firstname,
                                    tsgentity.member_Postcode,
                                    tsgentity.member_Reference,
                                    tsgentity.member_CardNum,
                                   mshiptypes.mshipType_Name,                                   
                                };

           if (txtfirstname.Text != "")
           {
              dgvmembersrep.DataSource = membersreport.Where(t => t.member_Firstname == txtlastname.Text).ToList();                
           }
           if (txtcardnum.Text != "")
           { 
                dgvmembersrep.DataSource = membersreport.Where(a => a.member_CardNum == txtcardnum.Text).ToList(); 
           }
}

это было хорошо, ...

Моя проблема здесь, у меня есть один comboboxsay (cbgemembershiptype) ......

когда пользователь выбирает тип членства в (cbgemembershiptype), я хочу получить информацию о членах тех, кто имеет этот тип членства ....

1 Ответ

3 голосов
/ 13 сентября 2011

(Ваш вопрос неясен с точки зрения того, выполняет ли ваш запрос то, что вы хотите. Я предполагаю, что это так.)

Неясно, почему вы хотите преобразовать этот запрос в один, используя лямбда-выражения. Это, конечно, возможно, но каждое объединение вводит новую переменную диапазона - к концу, строго буквальный перевод будет заканчиваться выбором, включающим что-то вроде

member_Id = a.b.c.member_Id

... это было бы совсем не читабельно.

Есть способы улучшить его, если вы пишете его от руки, но оно все равно не будет таким же ясным, как выражение запроса.

Вы должны определенно знать обе формы, и писать с использованием той формы, которая наиболее понятна для рассматриваемого запроса - что в данном случае, безусловно, является формой выражения запроса.

Для получения дополнительной информации о том, как переводятся выражения запросов, см. Мой пост Edulinq на эту тему .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...