gpt4 book ai didi

c# - LINQ to Entities 和多对多

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:08 32 4
gpt4 key购买 nike

编辑到最新的问题/关注点

我正在使用 EF1 并尝试执行以下操作,但我的多对多关系存在问题。我有 BuildExpression 扩展方法来解决 .Contains() 在 EF1 中不可用的问题。

PagingUsers & Groups 具有多对多关系。

这是我目前所拥有的有效方法。

// Find many groups
public IQueryable<Group> FindGroupsByGroupIDs(List<int> group_ids)
{
return db.Groups.Where(LINQHelpers.BuildContainsExpression<Group, int>(g => g.Group_ID, group_ids));
}

// Find users in a group
public IQueryable<PagingUser> FindPagingUsersByGroupID(int group_id)
{
return db.PagingUsers.Include("Groups").Where(u => u.Groups.Any(g => g.Group_ID == group_id));
}

现在我想结合这些并找到组列表中的用户。

public IQueryable<PagingUser> FindPagingUsersByGroupIDs(List<int> group_ids)
{
return from g in db.Groups.Where(LINQHelpers.BuildContainsExpression<Group,int>(g => g.Group_ID, group_ids))
join p in db.PagingUsers on ???
select p;
}

最佳答案

试试这个:

public IQueryable<PagingUser> FindPagingUsersByGroupIDs(List<int> group_ids)
{
var gids = group_ids.ToArray();
return from p in db.PagingUsers
where p.Groups.Any(g => gids.Contains(g.Group_ID))
select p;
}

至于第二个问题:你想去掉哪个lambda?内部还是外部?为什么?

关于c# - LINQ to Entities 和多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4259807/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com