2014-03-13 149 views
1

我有3个表对于多对多的关系。实体框架多对多选择

MailLists => MailListInGroups < =邮件组

而且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 

My MailGroups Table below;

MGID 

1 Türkiye 

2 İtalya 

3 Çok İyi 

4 İyi 

5 Orta 

和我的MailLists Table below;

MLID 

2 [email protected] NULL NULL 

3 [email protected] NULL NULL 

4 [email protected] NULL NULL 

5 [email protected] NULL NULL 

6 [email protected] NULL NULL 

7 [email protected] NULL NULL 

我需要获取到MailGroupID只是2和3。

例如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

试试这个

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); 
} 

更新:

我认为u需要改变你的方法是这样的:

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)); 
} 
+0

不起作用。这段代码返回了5个MailList结果。 2,3,3,6,7,7 – user181929

+0

我添加了上面的其他表......感谢您的回复。 – user181929

+0

我需要意大利和ÇokİyiMailLists结果.... – user181929