LINQ to SQL左连接左空白部分

时间:2015-03-10 12:25:55

标签: c# sql-server linq-to-sql

我有一个方法:

public Result[] LeftJoin(IQueryable<AEntities> aEntities)
{
    var bEntities = ReaderContext.GetContracts<BEntities>();

    var queryable = from a in aEntities
                    join bEntity in bEntities on a.BId equals bEntity.Id into bTemp
                    from b in bTemp.DefaultIfEmpty()
                    select new Result { A = a, B = b };

    return ReaderContext.Select(queryable);
}

当我调用LeftJoin(ReaderContext.GetContracts<AEntities>())时,执行此SQL查询:

SELECT * FROM A
LEFT OUTER JOIN B ON A.BId = B.Id

当我调用LeftJoin(new AEntities[0].AsQueryable())时,执行此SQL查询:

SELECT * FROM B

两者都返回正确的结果。

为什么执行第二个查询?

1 个答案:

答案 0 :(得分:3)

第一个是从数据库获取aEntitiesbEntities。第二个已经传入的数组中有aEntities,只需从数据库中获取bEntities,然后在代码中进行连接。