使用LINQ与Web控件列表交叉后返回实体

时间:2014-03-20 11:47:21

标签: c# asp.net .net linq

我可以使用以下命令返回在交叉点后匹配的ID(字符串):

var ids = db.QuestionOption
            .Select(a => a.ControlID)
            .Intersect(cs.Select(b => b.ClientID))
            .ToList();

我如何与ID相交但是获取实体,而不仅仅是匹配的ID?

2 个答案:

答案 0 :(得分:2)

首先,您可以获得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

答案 1 :(得分:1)

你可以做一个where子句而不是intersect:

var objs = db.QuestionOption.Where(a => cs.Select(b => b.ClientId).ToList().Contains(a.ControlID)).ToList();