代码之家  ›  专栏  ›  技术社区  ›  Sumanta

LINQ查询类别中的位置

  •  -1
  • Sumanta  · 技术社区  · 8 年前

    我有4张桌子 Transactions Attachment , SubReportType & SubRepRole

    List<int> userrole = new List<int>();
    UserContext user_details = (UserContext)HttpContext.Current.Cache["UserContext"];
    IList<UserRole> userrole_id = user_details.UserRoleModuleWise;
    
    var  query = (from trans in objContext.Transactions
                 join attch in objContext.Attachment on trans.TransId equals attch.TransId
                 join subrept in objContext.SubReportType on trans.SubRepId equals subrept.SubRepId
                 join subreprl in objContext.SubRepRole on trans.SubRepId equals subreprl.SubRepId
                 join selectedrole in userrole_id  on subreprl.RoleId equals selectedrole.RoleId
                 /*where obj.Contains(subreprl.RoleId) */orderby trans.TransDate
               select new AttachmentModel
               {
                   Createdate = attch.CreatedDateTime,
                   FileType = attch.FileType,
                   FileName = attch.FileName,
                   Attachid = attch.AttachedId,
                   FileTag = attch.FileTag,
                   Transid = trans.TransId,
                   SubReportName = subrept.SubRepName,
                   RandomPinNo = attch.FileRandomPin
               }).ToList();
    

    现在出现此错误:

    无法创建类型为的常量值 在此上下文中支持枚举类型。

    请帮忙。也尝试了“Contains”,但即将出现类型转换错误。只是想要那些角色在user_details.UserRoleModuleWise中的记录。用户详细信息。UserRoleModuleWise是一个包含RoleId和RoleName的数组

    2 回复  |  直到 8 年前
        1
  •  1
  •   NetMage    8 年前

    Contains

    where user_details.UserRoleModuleWise.Select(urmw => urmw.RoleId).ToArray().Contains(aRoleId => aRoleId == subreprl.RoleId)
    
        2
  •  0
  •   Sumanta    8 年前

    创建了一个公共类--

     object[] common_data = new object[4];
         UserContext user_details = (UserContext)HttpContext.Current.Cache["UserContext"];
            List<UserRole> userrole_id = user_details.UserRoleModuleWise.ToList();
           int[] roleid = { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20 };
            string[] rolename = { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" };
            for (int i = 0; i < userrole_id.Count; i++)
                {
                    roleid[i] = Convert.ToInt32(userrole_id[i].RoleId);
                    rolename[i] = Convert.ToString(userrole_id[i].RoleName);
                    r_id.Add(roleid[i], rolename[i]);
                }
                common_data[0] = roleid; 
                common_data[1] = rolename; 
               //common_data[2] = username; 
               common_data[3] = userrole_id.Count;
    

    然后在我的存储库中,我使用了-

            User_common_data ucd = new User_common_data();
            object[] ucd_data = ucd.user_common_details();
            int[] roles = (int[]) ucd_data[0];
    
            var query = (from obj in objContext.ReportType
                         join obj1 in objContext.SubReportType on obj.RepId equals obj1.RepId
                         join obj2 in objContext.SubRepRole on obj1.SubRepId equals obj2.SubRepId
                         where roles.Contains(obj2.RoleId)
                         select new ReportTypeModel
                         {
                             RepId = obj.RepId,
                             RepName = obj.RepName,
                             RepCode = obj.RepCode
                         }).ToList();