Я заполняю IEnumerable
с использованием запроса LINQ. Затем 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, он говорит, что база имеет значение null, но когда я перехожу к непубличным членам -> source, я могу видеть элементы.
Решение
Я понял, проблема, я пытался накормить источник данных в качестве параметра. Вместо этого я установил его как источник данных, и он отлично работает.
Возможно, вы можете добавить фрагмент кода, который инициализирует 'ReportParameters'? – Andomar
Отлаживайте код и смотрите, что на самом деле 'null' на этой строке кода. Вероятно, это не 'divisionList'. Коэффициенты заключаются в том, что либо 'ReportParameters' является« null », либо (вероятно, более вероятно), независимо от того, что он возвращает индексатор, является« null ». – Servy
Вы пытались использовать '.ToArray' в linq? – Fendy