RoL*_*LLs 0 c# linq lambda linq-expressions
我一直试图搜索谷歌但无济于事.感觉就像以前被问过,但也许我不是在谷歌搜索我认为我需要的东西.
我想要得到的集合Object是谁ICollection<T>的Id财产是一个value.
我应该用哪种方式编写这个Linq表达式?
例如:
public class User {
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Role> Roles { get; set; }
}
public class UserRole {
public int UserId { get; set; }
public int RoleId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我知道RoleId,我怎么得到所有User的?以下似乎是正确的,它确实给了我我需要的东西:
例1
var roleId = 1;
var users = db.UserRoles.SingleOrDefault(r => r.RoleId == roleId).Roles;
Run Code Online (Sandbox Code Playgroud)
但是,有可能反过来获得相同的结果吗?例如,我试过这个:
例2
var roleId = 1;
var users = db.Users.Where(u => u.UserRoles.Where(r => r.RoleId == roleId)).Users;
Run Code Online (Sandbox Code Playgroud)
我收到一条消息说Cannot convert type UserRole to bool.
Users吗?Object-X,但只知道一个Navigation属性的值,我该怎么想写这个表达式?
Object-Y where It's Id is this, then give me Object-X"我问,因为我习惯这样思考:"获取`Object-X,其中Object-Y具有此值".
也许我让这个令人困惑,但我希望有人帮助澄清它.
如果我知道RoleId,我如何获得所有用户的?
假设Role类具有RoleId属性,您可以执行以下操作:
var roleId = 1;
var users = db.Users.Where(q => q.Roles.Any(w => w.RoleId == roleId));
Run Code Online (Sandbox Code Playgroud)