【发布时间】:2009-04-23 22:11:20
【问题描述】:
假设我有计划和文件
Dim myPlans = _context.Plans.Where(predicate1)
Dim myDocuments = _context.Documents.Where(predicate2)
我已经为每个使用 PredicateBuilder 构建了 where 子句。因此,myPlans 和 myDocuments 具有正确的 SQL 语句。
我想做的是将这两个表连接到一个 linq 语句中。我遇到的问题是,默认情况下 AND 条件是加入 where 子句。
myPlans Where 子句:(p.name like "%test%" AND p.name like "%bed%") OR (p.description like "%test%" AND p.description like "%bed%")
myDocuments Where 子句:(d.name like "%test%" AND d.name like "%bed%") OR (d.description like "%test%" AND d.description like "%bed%")
当我将两者结合起来时,desired 结果 Where 子句是:
其中 (d.ID = p.ID) AND
(上面的myplans where 子句) OR (上面的mydocument where 子句)。意思是,我希望每个表中的两个 where 子句是“或”而不是“和”。
where子句的当前结果是: 其中 (d.ID = p.ID) AND (上面的 myplans where 子句) AND(上面的 mydocument where 子句)。意思是,我希望每个表中的两个 where 子句是“或”而不是“和”。
我正在形成这样的陈述:
Dim test = From d in myDocuments _
Join p in MyPlans on d.ID Equals p.ID _
Select d.Name, p.Name
【问题讨论】:
标签: vb.net linq linq-to-sql where