Добавить список в другой список, который является нулевым или не нулевым

Рассмотрим фрагмент кода ниже. Мне нужно вызвать метод 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);
Другие вопросы по тегам