Как выполнить левое соединение в linq pad -
Как я могу получить linq pad для запуска моего левого соединения, как показано ниже?
var query =
from s in db.CDBLogsHeaders
.OrderByDescending(g => g.LogDateTime)
from sc in db.StyleColors
.Where(stylecolor => stylecolor.id == (int?)s.StyleColorID)
.DefaultIfEmpty()
from c in db.StyleHeaders
.Where(styleHeader => styleHeader.id == (int?)s.StyleHeaderID)
.DefaultIfEmpty()
select new
{
CDBLogsHeaderId = s.Id,
Merchandiser = c.Merchandiser,
Material = s.Material,
Season = s.Season,
LogsHeaderLogType = s.LogType,
PushFromTo = s.PushFromTo,
LinePlan = s.LinePlan,
QuikRefNumber = s.QuikRefNumber,
PLMOrigin = s.PLM_Origin,
SeasonOriginal = c.SeasonOriginal,
SeasonCurrent = c.SeasonCurrent,
StyleHeaderId = c.Id,
StyleCode = c.StyleCode,
StyleColorsColorCode = sc.ColorCode
};
query.Dump();
Sql, который создает linq pad, отлично работает в Management Studio, но linq-pad не отображает никаких строк и выдает эту ошибку
InvalidOperationException: Нулевое значение не может быть назначено члену с типом System.Int32, который является необнуляемым типом значения.
Как заставить работать linqpad, чтобы я мог с ним поиграть?
1 ответ
Решение
В вашем анонимном типе убедитесь, что ваши int ы возвращают int.
+ Изменить
StyleHeaderId = c.Id,
к
StyleHeaderId = (c.Id == null ? 0 : c.Id),