我有3张桌子可供多对多关系使用。
MailLists => MailListInGroups< = MailGroups
和MailListInGroups一样,如下表所示;
MLID MGID
2 1
2 3
3 2
3 3
4 1
4 4
5 1
5 5
6 2
6 5
7 2
7 3
下面的我的邮件组表;
MGID
1 Türkiye
2 İtalya
3 Çok İyi
4 İyi
5 Orta
以及下面的我的邮件列表;
MLID
2 xxx@hotmail.com NULL NULL
3 yyy@hotmail.com NULL NULL
4 zzz@hotmail.com NULL NULL
5 ppp@hotmail.com NULL NULL
6 trp@deneme.com NULL NULL
7 zzz@hotmail.com NULL NULL
我需要只获取2和3的MailGroupID。我的行动如下;
例如int[] ints= 2,3
public ActionResult SelectGroup(int[] ints)
{
var mails = new List<MailList>();
var groups = ints.Select(item => _bb.MailGroups.Include("MailLists").Where(m => m.MailGroupID == item)).ToList();
}
组选择所有包含MailGroupID的2行和3行。(MLID = 2,3,6,7)。但我只需要2行。(MLID = 3,7)如何只选择2个MLID?
答案 0 :(得分:0)
试试这个
public ActionResult SelectGroup(int[] ints)
{
var listToFilter = new HashSet<int>(ints);
var list = _bb.MailGroups.Where(m => listToFilter.Contains(m.ID))
.SelectMany(m => m.MailLists);
}
更新:
我认为你需要改变你的方法:
public ActionResult SelectGroup(int[] mailGroupIds, int[] mailListIds)
{
var list = _bb.MailGroups.Where(m => mailGroupIds.Contains(m.ID))
.SelectMany(m => m.MailLists)
.Where(l => mailListIds.Contains(l.ID));
}