我有一个问题:
_selectQuery = _selectQuery.Substring(0, _selectQuery.Length - 1) + ")";
var testData= (from student in view.StudentView
join school in db.Schools on student.schoolid equals school.id into schools
from sc in schools.DefaultIfEmpty()
join tr in db.Teacher on sc.id equals tr.schoolid into teacherSchools
from tsc in teacherSchools.DefaultIfEmpty()
select new
{
school, sc, tsc
}.Select(_selectQuery);
foreach (var item in testData)
{
allData.Add(item.ToDynamic());
}
上面的代码在foreach / iteration部分抛出异常:testData为null。
在lambda_method匿名托管DynamicMethods程序集(闭包 ,<> f__AnonymousType337
13 ) at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()
在 Swift.PeopleCommon.Data.Export.EnhancedExportService.GetGridData(GridJsonGetRows grid,Boolean limitData)at DynamicModule.ns.Wrapped_IEnhancedExportStore_a2d199ba35504f35a326f3807ad0f404 .__ 1(IMethodInvocation 输入,GetNextInterceptionBehaviorDelegate getNext)
我尝试过像
这样的null checker join school in db.Schools on student==null ? 0 : student.schoolid equals school.id into something
但仍然会引发错误。
我尝试为select部分创建一个类(例如,选择新的TestClass {})而不是匿名但仍然抛出异常。我能错过什么?
答案 0 :(得分:0)
检查tsc
中的from tsc in teacherSchools.DefaultIfEmpty()
是否为NULL。
编辑1:
我认为异常是在
中引发的select new { school, sc, tsc }
检查内部对象
select new
{
School= (school==null ? new School() : school),
etc
}
答案 1 :(得分:0)
我也有同样的错误。原因是,其中一个db字段设置为default,但db列的值为NULL。所以我用默认字段更新了该字段,并且工作正常。