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 に答える