C# 为odata自定义Linq到实体查询
在我的实体类Core\u User中有一个部分成员IsSystemAdmin,因此我必须选择新对象。我正在使用Odata,为此我必须首先将查询转换为AsEnumerable,然后再转换为AsQueryable,这样它就可以进行分页。我可以自定义下面的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
[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查询中构造”