Linq Left Outer Join - DefaultIfEmpty Error

Существует набор типов устройств, некоторые из которых поддерживают параметры конфигурации. Я пытаюсь получить список всех типов устройств и любых применимых настроек.

Этот запрос не выбирает устройства, у которых нет DeviceParameters. Если я добавлю .DefaultIfEmpty (), как показано ниже, я получу следующую ошибку:

«Приведение к типу значения 'Int64' не удалось, потому что материализованное значение равно null. Либо общий параметр типа результата, либо запрос должен использовать допускающий значение NULL type. "

Каков правильный synatx для DefaultIfEmpty?

            var Devices = from d in dc.DeviceTypes
                      join p in dc.DeviceParameters on d.TypeID equals p.TypeID into tmpTable
                      from items in tmpTable.DefaultIfEmpty()
                      group items by d.DeviceName into g
                      select new
                      {
                          DeviceName = g.Key,
                          settings = from s in g
                                     select new
                                     {
                                         ParamName = s.ParamName,
                                         Param1 = s.Param1,
                                         Param2 = s.Param2,
                                         Param3 = s.Param3
                                     }
                      };
6
задан Mark Maslar 12 January 2011 в 21:08
поделиться