Linq通过多个对象类

时间:2013-02-13 10:46:35

标签: c# linq

我是Linq的新手,找不到类似的话题.. 我试图只显示当前经过身份验证的用户所在的组织。

我有以下Linq,但返回的组织不正确:

OrganizationList.DataSource = from i in Database<Organization>.Linq()
where (i.Users.Select(y => y.User.Id).Contains(user_id))
select i;

以下是课程:

public class Organization
{
    int Id
    string Name
    IList<OrganizationUser> Users
    [...]
}

OrganizationUser
{
    int Id
    User User
    Organization Organization
    [...]
}

User
{
    int Id
    string FirstName
    string LastName
    [...]
}

假设:

Database<TEntity> where TEntity : class

user_id是当前经过身份验证的用户ID

我正在使用NHibernate

我无法修改类,因此必须使用OrganizationUser。

你能帮我吗?


编辑: 非常感谢你的帮助!

这两种解决方案都有效:

OrganizationList.DataSource = Database<Organization>.Linq()
                             .Where(o => o.Users.Any(u => u.User.Id == user_id));


OrganizationList.DataSource = from i in Database<Organization>.Linq()
                              where (i.Users.Any(y => y.User.Id == user_id)
                              select i;

再次坦克:)

2 个答案:

答案 0 :(得分:0)

我没有机会测试它,但以下情况可能有效;

OrganizationList.DataSource = from i in Database<Organization>.Linq()
where (i.Users.Any(y => y.User.Id == user_id)
select i;

答案 1 :(得分:0)

怎么样,

var organizationsWithUser = Database<Organization>.Linq()
                           .Where(o => o.Users.Any(u => u.User.Id == user_id));