我正在IEnumerable
使用 LINQ 查询填充。然后IEnumerable
将其传递给另一个类并作为参数附加(到 Telerik 报告中)。在这条线上,我得到一个System.NullReferenceException
. 通过调试,我已经确认这IEnumerable
有一个值列表,所以我不确定为什么会这样。
以下是我的代码的一些相关片段:
Class1.cs
//Note that divisionList is an List of PKs and divisionTotalsList is a list of DivisionTotalsModel
foreach (int division in divisionList)
{
//LINQ Query
IEnumerable<DivisionTotalsModel> divSubset =
from divno in divisionTotalsList
where divno.DivisionNo == division
select divno;
//Create Report
if(divSubset.Any())
Class2.DoStuff(divSubset);
}
Class2.cs
public void DoStuff(IEnumerable<DivisionTotalsModel> divisionList){
using (var divisionTotalsReport = new DivisionReport())
{
//There are other parameters here that are working successfully
//This is the line that is failing
divisionTotalsReport.ReportParameters["list"].Value = divisionList;
}
}
为什么这里会出现错误?
ReportParameters
正在使用其他参数(和DateTime
)int
,我只是没有将它们包含在代码片段中。
我已经尝试ToList()
并成功收到了List<T>
,但 Telerik 需要IEnumerable<T>
.
问题必须出在新参数上,因为我之前已经能够使用其他参数(DateTime
和int
)成功创建报告。当我尝试添加这个新IEnumerable
参数时,问题才开始出现。
我已经通过调试器并查看了 IEnumerable,它说基础为空,但是当我转到非公共成员 - > 源时,我可以看到这些项目。
解决方案
我已经找到了问题所在,我试图将数据源作为参数提供。我已将其设置为数据源,并且效果很好。