Левое внешнее соединение Linq to SQL с использованием синтаксиса Lambda и объединение двух столбцов (составной ключ соедC#

Место общения программистов C#
Ответить
Anonymous
 Левое внешнее соединение Linq to SQL с использованием синтаксиса Lambda и объединение двух столбцов (составной ключ соед

Сообщение Anonymous »

Я пытаюсь выполнить внутреннее соединение двух столбцов с помощью Linq to SQL в качестве лямбда-выражения. Обычный запрос будет выглядеть так.

Код: Выделить всё

SELECT * FROM participants
LEFT OUTER JOIN prereg_participants ON prereg_participants.barcode = participants.barcode
AND participants.event_id = prereg_participants.event_id
WHERE (participants.event_id = 123)
Мне удалось создать левое внешнее соединение в одном столбце с помощью следующего кода.

Код: Выделить всё

var dnrs = context.participants.GroupJoin(
context.prereg_participants,
x => x.barcode,
y => y.barcode,
(x, y) => new { deelnr = x, vi = y })
.SelectMany(
x => x.vi.DefaultIfEmpty(),
(x, y) => new { deelnr = x, vi = y })
.Where(x => x.deelnr.deelnr.event_id == 123)
.ToList();
Проблема в том, что с приведенной выше лямбдой я получаю слишком много результатов, потому что в ней отсутствует часть AND parts.event_id = prereg_participants.event_id. Но что бы я ни пытался, я не набираю нужного количества участников.

Я просмотрел следующие существующие вопросы, но ни один из них не решил мою проблему с написанием правильной лямбды. И большинство решений не имеют лямбда-формата или не имеют левого внешнего соединения для нескольких столбцов.

Как выполнять соединения в LINQ для нескольких полей в одном соединении.

LINQ to SQL — левое внешнее соединение с несколькими условиями соединения.

Группировка. Используя более двух столбцов по лямбда-выражению.

И большинство из них из этого поиска Google.>

Подробнее здесь: https://stackoverflow.com/questions/504 ... mns-compos
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»