Добавить список в другой список, который является нулевым или не нулевым
Рассмотрим фрагмент кода ниже. Мне нужно вызвать метод CreateOrAddToLists()
в петле. Первый раз метод называется двумя списками casedata.Cases
а также casedata.Documents
будет нулевым, поэтому я могу заполнить, назначив cases
в casedata.Cases
как это:
casedata.Cases = cases;
При любом последующем вызове списков CreateOrAddToLists() casedata.Cases
а также casedata.Documents
не будет нулевым, и я могу добавить новые данные в списки, используя AddRange():
casedata.Cases.AddRange(cases);
var casedata = new CaseData(); //contains lists to get populated
private void CreateOrAddToLists()
{
var cases = new List<Case>(); //gets data with from database
var documents = new List<Document>(); //gets data with from database
if (casedata.Cases == null)
{
casedata.Cases = cases;
}
else
{
casedata.Cases.AddRange(cases);
}
if (casedata.Documents == null)
{
casedata.Documents = documents;
}
else
{
casedata.Documents.AddRange(documents);
}
}
Есть ли лучший или аккуратный способ сделать нулевую проверку перед AddRange
? Могу ли я сделать это в строке кода?
2 ответа
В конструкторе для CaseData
создайте экземпляры двух объектов списка, тогда вы будете уверены, что они не будут нулевыми, и вы можете просто использовать AddRange
,
public CaseData()
{
Cases = new List<Case>();
Documents = new List<Document>();
}
Это более понятно:
casedata.Cases = casedata.Cases ?? new List<Case>();
casedata.Cases.AddRange(cases);
casedata.Documents = casedata.Documents ?? new List<Document>();
casedata.Documents.AddRange(documents);