LINQIEnumerable
クエリを使用してデータを入力しています。その後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 を調べたところ、ベースが null であると表示されていますが、非パブリック メンバー -> ソースに移動するとアイテムが表示されます。
解決
問題を突き止めました。データ ソースをパラメーターとしてフィードしようとしていました。代わりにデータソースとして設定しましたが、完全に機能します。