Linq-to-Entities: LEFT OUTER JOIN с предложением WHERE и проекцией

Я ' У меня чертовски много времени, чтобы понять, как преобразовать простой SQL LEFT OUTER JOIN с предложением where с двумя условиями в рабочий запрос Linq-to-Entities. Всего две таблицы. Мне нужны значения для всех строк из таблицы 1, независимо от совпадений в таблице 2, но предложение WHERE использует поля из таблицы 2. В SQL двумя параметрами будут Table2WhereColumn1 и Table2WhereColumn2, и запрос (который работает) выглядит следующим образом:

SELECT t1.Table1Id,
    t1.FieldDescription, 
    t2.FieldValue
FROM Table1 t1 WITH (NOLOCK)
LEFT JOIN Table2 t2 WITH (NOLOCK) ON t1.Table1Id = t2.Table1Id
WHERE (t2.Table2WhereColumn1 = @someId OR t2.Table2WhereColumn1 IS NULL)
AND (t2.Table2WhereColumn2 = @someOtherId OR t2.Table2WhereColumn2 IS NULL)
ORDER BY t1.OrderByColumn

Я пробовал использовать Group Join с DefaultIfEmpty () , а также неявное соединение (без фактического ключевого слова Join ), и я получаю только строки для элементов, значения которых указаны в Table2. Я уверен, что это не поможет, но вот пример Linq, который я пробовал, который не работает: Я не работаю с Interface Builder. Вы можете привести мне один пример?

Мне нужно было получить координаты точки, в которой пользователь касается MKMapView. Я не работаю с Interface Builder. Можете ли вы привести мне один пример?

59
задан Cœur 17 May 2019 в 14:04
поделиться