Linq-запрос к Linq лямбда EF Core JoinC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Linq-запрос к Linq лямбда EF Core Join

Сообщение Anonymous »

Я пытаюсь выполнить левое соединение в EF Core с помощью Linq Lambda.
Я нашел нужный мне код, который работает в формате запроса Linq, но я предпочитаю использовать Lambda запрос.

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

public class PlayerWithOverride
{
public Player Player { get; set; }
public PlayerOverride PlayerDataOverride{ get; set; }

}

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

var query = from b in ctx.Players
join p in ctx.PlayerOverrides
on b.PlayerId equals p.PlayerId into grouping
from p in grouping.DefaultIfEmpty() where b.PlayerId == 2706
select new PlayerWithOverride() { Player = b, PlayerDataOverride= p };

var res = query.FirstOrDefault(); // Correctly return a row even when there is no match in sub table.

Вышеупомянутое работает правильно. Он вернет игрока, и если в таблице PlayerOverrides есть соответствующее переопределение, он добавит его в PlayerDataWithOverride, в противном случае PlayerDataWithOverride будет иметь значение null. Итак, он выполняет левое соединение.

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

var test = ctx.Players.Where(o => o.PlayerId == 2706).Join(
ctx.PlayerOverrides.DefaultIfEmpty(),
p => p.PlayerId,
e => e.PlayerId,
(p, e) => new PlayerWithOverride()
{
Player = p,
PlayerDataOverride = e

});

var pl = test.FirstOrDefault(); // null when both rows don't match

При попытке сделать то же самое в Lambda (см. выше) выполняется внутреннее соединение, в результате чего он возвращает что-либо только в том случае, если есть результат из обеих таблиц.
Какой правильный перевод Lambda для версии запроса?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -core-join
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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