Left join In lInq Join [duplicate]

На этот вопрос уже есть ответ:

Всего 3 ответа


Присоединиться не дает ошибки. Ошибка была вызвана в указанной ниже строке

var getInvoice = getInvoiceMedium.CodeDesc;

FirstOrDefault() возвращает первый элемент последовательности или значение по умолчанию, если элемент не найден.

Вы можете обрабатывать нуль следующими способами

var getInvoice = getInvoiceMedium?.CodeDesc;

ИЛИ ЖЕ

var getInvoice;
if(getInvoiceMedium != null)
      getInvoice = getInvoiceMedium.CodeDesc;
else
      getInvoice = null;

Вы не должны запрашивать весь объект, если вы возвращаете только одно поле. Вот что я буду делать:

return (from category in db.SendCaseException.Where(x => x.RefId == refId)
        join prod in db.CompanyCodeValue.Where(x => x.CodeType == "Medium") on category.InvoiceMedium equals prod.CodeId  
        select prod.CodeDesc).FirstOrDefault();

Это вернет значение NULL, CodeDesc от CodeDesc .


Попробуйте поместить предложение where после объединения и проверить значение null в переменной getInvoice .

var getInvoiceMedium = (from category in db.SendCaseException
                        join prod in db.CompanyCodeValue on category.InvoiceMedium equals prod.CodeId
                        where (category.RefId == refId) && (prod.CodeType == "Medium")
                        select prod).FirstOrDefault();

var getInvoice = getInvoiceMedium?.CodeDesc;

return getInvoice;

Есть идеи?

10000