Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为odata自定义Linq到实体查询_C#_Linq_Odata - Fatal编程技术网

C# 为odata自定义Linq到实体查询

C# 为odata自定义Linq到实体查询,c#,linq,odata,C#,Linq,Odata,在我的实体类Core\u User中有一个部分成员IsSystemAdmin,因此我必须选择新对象。我正在使用Odata,为此我必须首先将查询转换为AsEnumerable,然后再转换为AsQueryable,这样它就可以进行分页。我可以自定义下面的linq查询吗。任何帮助都将不胜感激 [HttpGet] [ODataRoute("GetUsersWithRole")] public IQueryable<Core_User> GetUsersWithRole() { var

在我的实体类Core\u User中有一个部分成员IsSystemAdmin,因此我必须选择新对象。我正在使用Odata,为此我必须首先将查询转换为AsEnumerable,然后再转换为AsQueryable,这样它就可以进行分页。我可以自定义下面的linq查询吗。任何帮助都将不胜感激

[HttpGet]
[ODataRoute("GetUsersWithRole")]
public IQueryable<Core_User> GetUsersWithRole()
{
    var result = (from user in Db.Core_User
                  let newRole = (from userRole in Db.Auth_UserRole
                                 join role in Db.Auth_Role on userRole.RoleId equals role.Id
                                 where userRole.UserId == user.Id && role.Name == ApplicationRoleTypes.SystemAdmin
                                 select role
                          ).FirstOrDefault()
                  where user.UserType == (int)Enumerations.UserType.Agent && !user.IsDeleted
                  select new
                  {
                      user.Id,
                      user.Email,
                      user.EmailConfirmed,
                      user.PasswordHash,
                      user.SecurityStamp,
                      user.PhoneNumber,
                      user.PhoneNumberConfirmed,
                      user.TwoFactorEnabled,
                      user.LockoutEndDateUtc,
                      user.LockoutEnabled,
                      user.AccessFailedCount,
                      user.UserName,
                      user.Discriminator,
                      user.FirstName,
                      user.LastName,
                      user.ProfilePhoto,
                      user.ParentCompanyId,
                      user.IsDeleted,
                      user.IsActive,
                      user.CreatedBy,
                      user.CreatedDate,
                      user.ModifiedBy,
                      user.ModifiedDate,
                      IsSystemAdmin = newRole != null
                      })
            .AsEnumerable().Select(x => new Core_User
            {
                Id = x.Id,
                Email = x.Email,
                EmailConfirmed = x.EmailConfirmed,
                PasswordHash = x.PasswordHash,
                SecurityStamp = x.SecurityStamp,
                PhoneNumber = x.PhoneNumber,
                PhoneNumberConfirmed = x.PhoneNumberConfirmed,
                TwoFactorEnabled = x.TwoFactorEnabled,
                LockoutEndDateUtc = x.LockoutEndDateUtc,
                LockoutEnabled = x.LockoutEnabled,
                AccessFailedCount = x.AccessFailedCount,
                UserName = x.UserName,
                Discriminator = x.Discriminator,
                FirstName = x.FirstName,
                LastName = x.LastName,
                ProfilePhoto = x.ProfilePhoto,
                ParentCompanyId = x.ParentCompanyId,
                IsDeleted = x.IsDeleted,
                IsActive = x.IsActive,
                CreatedBy = x.CreatedBy,
                CreatedDate = x.CreatedDate,
                ModifiedBy = x.ModifiedBy,
                ModifiedDate = x.ModifiedDate,
                IsSystemAdmin = x.IsSystemAdmin
            }).AsQueryable();

   return result;
}
[HttpGet]
[ODataRoute(“GetUsersWithRole”)]
公共IQueryable GetUsersWithRole()
{
var result=(来自Db.Core_user中的用户)
让newRole=(来自Db.Auth\u userRole中的userRole)
在userRole.RoleId等于role.Id的Db.Auth_角色中加入角色
其中userRole.UserId==user.Id&&role.Name==ApplicationRoleTypes.SystemAdmin
选择角色
).FirstOrDefault()
其中user.UserType==(int)Enumerations.UserType.Agent&&!user.IsDeleted
选择新的
{
user.Id,
用户邮箱,
user.email已确认,
user.PasswordHash,
user.SecurityStamp,
user.PhoneNumber,
user.phoneNumber已确认,
user.twofacturenabled,
user.LockoutEndDateUtc,
user.LockoutEnabled,
user.AccessFailedCount,
user.UserName,
用户识别器,
user.FirstName,
user.LastName,
user.ProfilePhoto,
user.ParentCompanyId,
user.IsDeleted,
user.IsActive,
user.CreatedBy,
user.CreatedDate,
user.ModifiedBy,
user.ModifiedDate,
IsSystemAdmin=newRole!=null
})
.AsEnumerable().选择(x=>新核心用户
{
Id=x.Id,
Email=x.电子邮件,
emailconfirm=x.emailconfirm,
PasswordHash=x.PasswordHash,
SecurityStamp=x.SecurityStamp,
PhoneNumber=x.PhoneNumber,
PhoneNumberConfiged=x.PhoneNumberConfiged,
TwoFactorEnabled=x.TwoFactorEnabled,
LockoutEndDateUtc=x.LockoutEndDateUtc,
LockoutEnabled=x.LockoutEnabled,
AccessFailedCount=x.AccessFailedCount,
UserName=x.UserName,
鉴别器=x。鉴别器,
FirstName=x.FirstName,
LastName=x.LastName,
ProfilePhoto=x.ProfilePhoto,
ParentCompanyId=x.ParentCompanyId,
IsDeleted=x.IsDeleted,
IsActive=x.IsActive,
CreatedBy=x.CreatedBy,
CreatedDate=x.CreatedDate,
ModifiedBy=x.ModifiedBy,
ModifiedDate=x.ModifiedDate,
IsSystemAdmin=x.IsSystemAdmin
}).AsQueryable();
返回结果;
}

你就不能把它作为一个可查询的对象。。。我已经试过了,但是odata抛出了一个异常“实体不能在linq to entities查询中构造”你不能把它作为一个可查询的。。。我已经试过了,但是odata抛出了一个异常“实体不能在linq to entities查询中构造”