Ошибка LINQ DefaultIfEmpty для объекта со свойством типа, не допускающего значения NULL

требование

  1. Мне нужно присоединиться к Table1 и Table2
  2. Ключ между двумя таблицами - это идентификатор, который имеет тип System.Guid и тип значения, не допускающий значения NULL.
  3. Если Table2.ID имеет значение null, мне нужно получить нулевую запись из Table1.

Синтаксис LINQ, который я написал, выглядит следующим образом.

from records in DBContext.Table1
join history in DBContext.Table2 into recordhistory
from records in recordhistory.DefaultIfEmpty()
select (n => n);

Я получил ошибку: "Нулевое значение не может быть назначено члену с типом System.Guid, который является необнуляемым типом значения".

Может кто-нибудь посоветовать мне это? Большое спасибо.

2 ответа

Предполагая, что у вас есть свойство ID, следующее должно работать как внутреннее соединение:

var result = DBContext.Table1
              .Join(DBContext.Table2, t1 => t1.ID, t2 => t2.ID, (t1, t2) => t1);

Я думаю, запрос, который вы предоставили, должен дать ошибку, сказав, что on заявление должно быть указано. Итак, я думаю, это должно выглядеть примерно так:

from records in DBContext.Table1
join history in DBContext.Table2 on records.ID equals history.ID into temp
from recordhistory in temp.DefaultIfEmpty()
select new { Record = records, History = recordhistory };
Другие вопросы по тегам