gpt4 book ai didi

c# - IEnumerable 有值但仍然给出 System.NullReferenceException

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:13 24 4
gpt4 key购买 nike

我正在填充 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正在使用其他参数(DateTimeint),我只是没有将它们包含在代码片段中。

我试过了 ToList()并成功收到List<T> , 但 Telerik 需要 IEnumerable<T> .

问题必须出在新参数上,因为我之前使用其他参数(DateTimeint)已经能够成功创建报告。当我尝试添加这个新的 IEnumerable 时,问题才开始出现。参数。

我已经通过调试器查看了 IEnumerable,它说基数为空,但是当我转到非公共(public)成员 -> 源代码时,我可以看到这些项目。

解决方案

我已经解决了问题,我试图将数据源作为参数提供。我已将其设置为数据源,并且运行良好。

最佳答案

在这条线上,不仅仅是divisionList可以是null ,事实上,在这种情况下,它会很好。

divisionTotalsReport.ReportParameters["list"].Value = divisionList

作为 NullReferenceException异常通常仅在尝试取消引用对象时发生,候选对象是:

  1. divisionTotalsReport
  2. divisionTotalsReport.ReportParameters
  3. divisionTotalsReport.ReportParameters["list"]

如果您确认 divisionTotalsReport已设置并且ReportParameters正在返回有效引用,那么它很可能只是没有 list项目。

您没有显示初始化 DivisionReport 的内容但如果它是从报告文件加载的,您可能需要添加 list参数,然后才能设置它。

关于c# - IEnumerable 有值但仍然给出 System.NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com