匿名托管DynamicMethods程序集c#linq

时间:2015-10-15 15:03:10

标签: c# linq dynamicquery

我有一个问题:

_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 {})而不是匿名但仍然抛出异常。我能错过什么?

2 个答案:

答案 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。所以我用默认字段更新了该字段,并且工作正常。