Допустим, у меня есть планы и документы
Dim myPlans = _context.Plans.Where(predicate1)
Dim myDocuments = _context.Documents.Where(predicate2)
Я структурировал предложение where для каждого использования PredicateBuilder. Таким образом, myPlans и myDocuments имеют правильное выражение SQL.
Я хотел бы объединить эти две таблицы в один оператор linq. Проблема, с которой я сталкиваюсь, заключается в том, что по умолчанию условие AND присоединяется к предложениям where.
Предложение myPlans Where : (p.name, например, "%test%" И p.name, например, "%bed%") ИЛИ (p.description, например, "%test%" И p.description, например, "%bed%")
myDocuments Where item : (d.name, например, "%test%" И d.name, например, "%bed%") ИЛИ (d.description, например, "%test%" И d.description, например, "%bed%")
Когда я объединяю два желаемого результата, предложение Where:
Where (d.ID = p.ID) И (предложение myplans where выше) ИЛИ (mydocument where пункт выше). Это означает, что я бы хотел, чтобы два предложения where в каждой из таблиц были «или» вместо «И».
Текущий результат предложения where: Where (d.ID = p.ID) AND (предложение where myplans выше) AND (предложение where mydocument выше). Это означает, что я бы хотел, чтобы два предложения where в каждой из таблиц были «или» вместо «И».
Я формирую заявление следующим образом:
Dim test = From d in myDocuments _
Join p in MyPlans on d.ID Equals p.ID _
Select d.Name, p.Name