1

我是 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;

再次感谢:)

4

2 回答 2

0

我没有机会对其进行测试,但以下方法可能有效;

OrganizationList.DataSource = from i in Database<Organization>.Linq()
where (i.Users.Any(y => y.User.Id == user_id)
select i;
于 2013-02-13T10:52:56.547 回答
0

怎么样,

var organizationsWithUser = Database<Organization>.Linq()
                           .Where(o => o.Users.Any(u => u.User.Id == user_id));
于 2013-02-13T10:58:09.507 回答