我正在构建一个民意调查窗口小部件。我有两张桌子,称之为民意调查和民意测验。我需要做一个linq查询来获取PollsCompleted中给定用户不存在的所有轮询。
我有以下几套:
民意调查 Where Active == True
PollsCompleted UserId == ThisUserId PollId = Polls.Id
现在我需要获得PollsCompleted中不存在的所有民意调查。我需要使用单个或多个查询的示例。我试图将其分解为2个查询。
基本上,我有2个类型为T和T1的IQueryables。我想取T1.ParentId中不存在T.ID的所有T。
答案 0 :(得分:17)
T.Where(x => ! T1.Select(y => y.ParentID).Contains(x.ID))
在Linq,你经常从下往上工作。这里我们首先得到T1中所有parentID的集合--T1.Select(...)部分。然后我们创建一个where子句,选择其ID不包含在该集合中的所有Ts。
请注意,结果是查询。要实现它,请在上面的语句中使用ToList()或类似的东西。
答案 1 :(得分:6)
使用Except
。这将适用于这种情况。