通过多个对象类执行Linq

本文关键字:执行 Linq 对象 | 更新日期: 2023-09-27 17:59:12

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

再次Thanx:)

通过多个对象类执行Linq

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

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

怎么样,

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