LINQ左外部联接NullReferenceException

LINQ左外部联接NullReferenceException,linq,Linq,在执行左外部联接时,我得到NullReferenceException 类似的查询在LINQ Pad中有效,但在Visual Studio 2015中无效。用户代码未处理System.NullReferenceException HResult=-2147467261 Message=对象引用未设置为对象的实例 提前谢谢 无法工作的.Net核心LINQ代码: public IEnumerable<R> GetAll() { var results =

在执行左外部联接时,我得到NullReferenceException

类似的查询在LINQ Pad中有效,但在Visual Studio 2015中无效。用户代码未处理System.NullReferenceException HResult=-2147467261 Message=对象引用未设置为对象的实例

提前谢谢

无法工作的.Net核心LINQ代码:

    public IEnumerable<R> GetAll()
    {
        var results =
            from a in uow.R.GetAll()
            join b in uow.SSR.GetAll() on a.ID equals b.RID into g9
            from c in g9.DefaultIfEmpty()
            join d in uow.SS.GetAll() on c.SSID equals d.ID into g10
            from e in g10.DefaultIfEmpty()
            select new
            {
                a.Id,
                SSID = c == null ? null : (int?)c.SSID,
                e.Name
            };
        List<R> rList = new List<R>();
        foreach (var a in results)
        {
            resourceList.Add(new R { ID = a.Id, SSID = a.SSID });
        }
        return rList.ToArray<R>();
    }
`
    var Result =    
    from a in Tbl_R             
    join b in Tbl_SS on a.ID equals b.RID into g9
    from c in g9.DefaultIfEmpty()           
    join d in Lu_SS on c.SSID equals d.SSID into g10
    from e in g10.DefaultIfEmpty()
    select new
    {
        a.ID,
        SSID = c == null ? null : (int?)c.SSID,
        e.Name
    };
    Result.Dump();


SELECT t2.ID,
ISNULL(t17.SSID,'') as SSID
ISNULL(t17.Name,'') as Name
FROM R t2  
LEFT JOIN SSR t16 ON t16.RID=t2.ID
LEFT JOIN SS t17 ON t16.SSID=t17.SSID
public IEnumerable GetAll()
{
var结果=
从uow.R.GetAll()中的
将a.ID等于b.RID的uow.SSR.GetAll()中的b连接到g9中
来自g9.DefaultIfEmpty()中的c
将c.SSID=d.ID上的uow.SS.GetAll()中的d连接到g10中
从g10.DefaultIfEmpty()中的e开始
选择新的
{
a、 身份证,
SSID=c==null?null:(int?)c.SSID,
e、 名字
};
List rList=新列表();
foreach(结果中的var a)
{
Add(新的R{ID=a.ID,SSID=a.SSID});
}
返回rList.ToArray();
}
`
var结果=
来自Tbl\R中的
将b加入a.ID上的Tbl_SS等于b.RID加入g9
来自g9.DefaultIfEmpty()中的c
将c.SSID上的LUU SS中的d与d.SSID连接到g10中
从g10.DefaultIfEmpty()中的e开始
选择新的
{
a、 身份证,
SSID=c==null?null:(int?)c.SSID,
e、 名字
};
Result.Dump();
选择t2.ID,
ISNULL(t17.SSID“”)作为SSID
名称为ISNULL(t17.Name“”)
从R t2
左连接t16上的SSR t16。RID=t2.ID
左连接t16上的SST17。SSID=t17.SSID

可能重复的代码,请在设置代码格式方面投入更多精力。我非常怀疑它在Visual Studio中的外观-缩进对于可读性非常重要。请注意,g9.DefaultIfEmpty()中c的
表示
c
可以为空。。。因此,您在紧接着使用
c.SSID
这一事实是有问题的。Jon Skeet,我的假设是SSID=c==null?null:(int?)c.SSID应该处理这个问题。你能建议如何解决这个问题吗?我相信他指的是将c.SSID=d.ID上的uow.SS.GetAll()中的d连接到g10中