Я нашел нужный мне код, который работает в формате запроса 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.
Код: Выделить всё
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 для версии запроса?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -core-join