在Linq中按包含排序

时间:2015-07-03 05:40:12

标签: c# linq

我有一个名为角色的列表。使用此列表,我得到另一个名为 menu 的列表,其中在一个名为RoleType的实体字段中,我也插入了d.RoleID。

如何通过名为menu的第二个列表中的 RoleType = d.RoleID 订购第二个列表?

我已尝试.Distinct().ToList().OrderBy(RoleType),但它无法正常工作。

var roles = (from d in db.TB_UserRoles
              where d.UserID == userID
              select d.RoleID).ToList();


var menu = (from d in db.TB_MenuRoles
            where roles.Contains(d.RoleID)
            select new Menu
            {
             MenuName = d.TB_Menu.Name,
             RoleType = d.RoleID
            }).Distinct().ToList();

2 个答案:

答案 0 :(得分:2)

OrderBy(RoleType)不是有效的linq语法,它应该是

OrderBy(x => x.RoleType)

答案 1 :(得分:1)

尝试此查询

var roles = (from d in db.TB_UserRoles
              where d.UserID == userID
              select d.RoleID).ToList();


var menu = (from d in db.TB_MenuRoles
            where roles.Contains(d.RoleID)
            select new Menu
            {
             MenuName = d.TB_Menu.Name,
             RoleType = d.RoleID
            }).Distinct().OrderBy(x=>x.RoleType).ToList();