我正在使用LINQ查詢填充IEnumerable
。 IEnumerable
然後被傳遞到另一個類中,並作爲參數添加到Telerik報告中。在這一行上,我得到一個System.NullReferenceException
。通過調試我已經確認這IEnumerable
有一個值列表,所以我不知道爲什麼會發生這種情況。IEnumerable具有值,但仍然給出System.NullReferenceException
這裏是我的代碼一些相關片段:
的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,它說基地是空的,但當我去非公共成員 - >源我可以看到的項目。
解決方案
我已經想通了這個問題,我試圖養活數據源作爲參數。我已經將它設置爲數據源,它完美地工作。
也許你可以添加一段代碼來初始化ReportParameters? – Andomar 2013-05-13 15:07:47
調試代碼並查看該代碼行實際上是否爲null。這可能不是'divisionList'。可能的是,無論「索引器返回值爲null」,「ReportParameters」都是「null」還是(可能更可能)。 – Servy 2013-05-13 15:09:06
您是否嘗試過在linq中使用'.ToArray'? – Fendy 2013-05-13 15:12:42