2013-11-28 1 views
0

Пожалуйста, исправьте в запросеEntity Framework запрос присоединяется и группа по вопросу

В PL/SQL

SELECT a.MENU_ID, a.menu_label, a.menu_value 
FROM tbl_ims_menu a, TBL_IMS_ROLE_ASSIGNED_MENU b,TBL_IMS_USER_ROLE_PRIVILEGES c 
WHERE a.menu_id = b.menu_id AND b.urole_id = c.granted_role 
           AND c.user_id = '3' AND a.menu_master <> '0' 
           AND a.menu_status = 'Active' 
GROUP BY a.menu_id, a.menu_label, a.menu_value 

запрос работает нормально есть некоторая проблема, когда переписывают в рамках Entity

проверка следующее запрос

List<TBL_IMS_MENU> listSubMenu = (from m in db.TBL_IMS_MENU 
            join ra in db.TBL_IMS_ROLE_ASSIGNED_MENU on m.MENU_ID 
            equals ra.MENU_ID 
            join rp in db.TBL_IMS_USER_ROLE_PRIVILEGES on ra.UROLE_ID 
            equals rp.GRANTED_ROLE 
            where rp.USER_ID == UserID 
            group m by m.MENU_ID 
            into g select g).ToList(); 

Если я использовал Var вместо списка, то как стрелять?

+0

, что это ошибка, которую вы получить? – johnny

+0

ключевое слово var - это просто вывод типа. Тип запроса после вызова ToList() будет IEnumerable, поэтому вы можете перечислить его, как вы делаете это со списком. –

ответ

0

Я думаю, что вам нужно удалить свои join заявления - и просто использовать where, как вы делаете в необработанном SQL запроса:

var qry = (from a in db.TBL_IMS_MENU 
      from b in db.TBL_IMS_ROLE_ASSIGNED_MENU 
      from c in db.TBL_IMS_USER_ROLE_PRIVILEGES 

      where c.USER_ID == UserID 
      where b.UROLE_ID == c.GRANTED_ROLE 
      where a.MENU_ID == b.MENU_ID 
      where a.menu_status == "Active" 
      where a.menu_master != "0" 
      select a) 
      .GroupBy(c => c.menu_id) 
       .ThenBy(c => c.menu_label) 
       .ThenBy(c => c.menu_value) 
      .ToList(); 
+0

@ user3046931 Это работает для вас? –

0

попробовать что-то вроде этого:

var listSubMenu = (from m in db.TBL_IMS_MENU 
            join ra in db.TBL_IMS_ROLE_ASSIGNED_MENU on m.MENU_ID 
            equals ra.MENU_ID 
            join rp in db.TBL_IMS_USER_ROLE_PRIVILEGES on ra.UROLE_ID 
            equals rp.GRANTED_ROLE 
            where rp.USER_ID == UserID 
            group m by new { m.MENU_ID, m.menu_label, m.menu_value } 
            into g select g).ToList(); 

foreach(var groupItem in listSubMenu) 
{ 
    // go through groups like this - groupItem.Key.MENU_ID 
    foreach(var menuItem in grouItem) 
    { 
     //go through each item in group like this - menuItem.GRANTED_ROLE 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^