Linq-to-sql不包含或不包含?

时间:2010-09-17 21:39:55

标签: linq linq-to-sql

我正在构建一个民意调查窗口小部件。我有两张桌子,称之为民意调查和民意测验。我需要做一个linq查询来获取PollsCompleted中给定用户不存在的所有轮询。

我有以下几套:

民意调查 Where Active == True

PollsCompleted UserId == ThisUserId PollId = Polls.Id

现在我需要获得PollsCompleted中不存在的所有民意调查。我需要使用单个或多个查询的示例。我试图将其分解为2个查询。

基本上,我有2个类型为T和T1的IQueryables。我想取T1.ParentId中不存在T.ID的所有T。

2 个答案:

答案 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。这将适用于这种情况。

供参考Enumerable.Except Method