【发布时间】:2014-03-20 11:47:21
【问题描述】:
我可以使用以下方法返回相交后匹配的 ID(字符串):
var ids = db.QuestionOption
.Select(a => a.ControlID)
.Intersect(cs.Select(b => b.ClientID))
.ToList();
如何与 ID 相交但获取实体,而不仅仅是匹配的 ID?
【问题讨论】:
我可以使用以下方法返回相交后匹配的 ID(字符串):
var ids = db.QuestionOption
.Select(a => a.ControlID)
.Intersect(cs.Select(b => b.ClientID))
.ToList();
如何与 ID 相交但获取实体,而不仅仅是匹配的 ID?
【问题讨论】:
首先你可以得到Ids:
var idList = cs.Select(b => b.ClientID);
然后你可以像这样使用Contains:
var result = db.QuestionOption.Where(a => idList.Contains(a.ControlID)).ToList();
或者,您可以使用join:
from q in db.QuestionOption
join x in cs on q.ControlId equals x.ControlId
select q
【讨论】:
你可以用 where 子句代替 intersect:
var objs = db.QuestionOption.Where(a => cs.Select(b => b.ClientId).ToList().Contains(a.ControlID)).ToList();
【讨论】: