假设我有计划和文件
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%")
当我将两者结合起来时,所需的结果 Where 子句是:
Where (d.ID = p.ID) AND (myplans where 子句) OR (mydocument where 子句)。意思是,我希望每个表中的两个 where 子句是“或”而不是“和”。
当前结果 where 子句是:Where (d.ID = p.ID) AND (myplans where clause above) AND (mydocument where clause above)。意思是,我希望每个表中的两个 where 子句是“或”而不是“和”。
我正在形成这样的声明:
Dim test = From d in myDocuments _
Join p in MyPlans on d.ID Equals p.ID _
Select d.Name, p.Name