1

EF 4.5 を使用して、次のステートメントでゼロ カウント サブクエリ (relatedDrivers) を null に変換したいと考えています。

var query = from car in context.tblCar
                 let relatedDrivers = (from driver in context.tblDriver
                                       where driver.CarId == car.CarId
                                       select driver)
                 select new
                 {
                     CarId = car.CarId,
                     Drivers = relatedDrivers.Count() == 0 ? null : relatedDrivers
                 };

しかし、「System.Linq.IQueryable`1」型の null 定数値を作成することは不可能であるという「NotSupportedException」が表示されます。Entity Framework がこのクエリを T-SQL に変換するのが非常に難しいのはなぜでしょうか。サブクエリを調べて、結果カウントがゼロの場合に NULL を返すことは、それほど複雑ではないようです。

解決策と説明は大歓迎です。

4

1 に答える 1

3

解決策はIQueriable.DefaultIfEmpty()です。したがって、クエリは次のように変更されます。

var query = from car in context.tblCar
             let relatedDrivers = (from driver in context.tblDriver
                                   where driver.CarId == car.CarId
                                   select driver).DefaultIfEmpty()
             select new
             {
                 CarId = car.CarId,
                 Drivers = relatedDrivers
             }; 
于 2013-07-07T13:33:43.697 に答える