【发布时间】:2018-02-14 00:30:09
【问题描述】:
我一直在尝试搜索 Google,但无济于事。感觉好像以前有人问过,但也许我没有在谷歌上搜索我认为我需要的正确内容。
我想获取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; }
}
如果我知道RoleId,我如何获得所有User?以下似乎是正确的,它确实给了我我需要的东西:
示例 1
var roleId = 1;
var users = db.UserRoles.SingleOrDefault(r => r.RoleId == roleId).Roles;
但是,是否有可能反过来得到相同的结果?例如,我试过这个:
示例 2
var roleId = 1;
var users = db.Users.Where(u => u.UserRoles.Where(r => r.RoleId == roleId)).Users;
我收到一条消息说Cannot convert type UserRole to bool。
- 还有其他方法可以获得
Users吗? - 知道我想要
Object-X,但只知道Navigation属性的值,我应该如何考虑编写表达式?- 我是否应该想:“获取
Object-Y where It's Id is this, then give me Object-X” - 还是别的什么?
- 我是否应该想:“获取
我问是因为我习惯于这样思考:“Get `Object-X where it's Object-Y has this value”。
也许我把这弄糊涂了,但我希望有人能帮助解决它。
【问题讨论】:
标签: c# linq lambda linq-expressions