Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架LINQ查询左连接到新对象,而不是null_C#_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# 实体框架LINQ查询左连接到新对象,而不是null

C# 实体框架LINQ查询左连接到新对象,而不是null,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,基本上,我试图在LINQ查询中执行左外部联接,但我希望返回左联接对象的空实例,而不是null。我的以下解决方案导致错误: 无法在LINQ to Entities查询中构造实体或复杂类型“SubObject 2” LINQtoEntities提供程序之所以抛出该实例,是因为它无法将该实例化正确地转换为SQL查询(这正是LINQtoEntities所做的)。由于您的方法仅返回一个对象,因此我建议您执行以下操作以进行补偿: var query = (from a in ctx.tableA

基本上,我试图在LINQ查询中执行左外部联接,但我希望返回左联接对象的空实例,而不是null。我的以下解决方案导致错误:

无法在LINQ to Entities查询中构造实体或复杂类型“SubObject 2”


LINQtoEntities提供程序之所以抛出该实例,是因为它无法将该实例化正确地转换为SQL查询(这正是LINQtoEntities所做的)。由于您的方法仅返回一个对象,因此我建议您执行以下操作以进行补偿:

var query = (from a in ctx.tableA
             join b in ctx.tableB on b.FKID equals a.PKID into b_a
             from b in b_a.DefaultIfEmpty()
             select new MyObjectsHolder()
             {
                 SubObject1 = a,
                 SubObject2 = b
             });

var result = query.FirstOrDefault();

if(result != null && result.SubObject2 == null) result.SubObject2 = new SubObject2();

return result;
var query = (from a in ctx.tableA
             join b in ctx.tableB on b.FKID equals a.PKID into b_a
             from b in b_a.DefaultIfEmpty()
             select new MyObjectsHolder()
             {
                 SubObject1 = a,
                 SubObject2 = b
             });

var result = query.FirstOrDefault();

if(result != null && result.SubObject2 == null) result.SubObject2 = new SubObject2();

return result;