将列表添加到另一个列为null或非null的列表

hso*_*sop 1 c# null list addrange

考虑下面的代码段.我需要CreateOrAddToLists()在循环中调用该方法.第一次将该方法称为两个列表casedata.Cases并且casedata.Documents将为null,因此我可以通过赋值casescasedata.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);
    }
}
Run Code Online (Sandbox Code Playgroud)

以前有更好或更简洁的方法进行空检查AddRange吗?我可以在代码行吗?

Ste*_*eve 8

在用于CaseData实例化两个列表对象的构造函数中,您将确信它们不会为null,您可以使用它AddRange.

public CaseData()
{
    Cases = new List<Case>();
    Documents = new List<Document>();
}
Run Code Online (Sandbox Code Playgroud)


And*_*kin 6

更清楚的是:

casedata.Cases = casedata.Cases ?? new List<Case>();
casedata.Cases.AddRange(cases);

casedata.Documents = casedata.Documents ?? new List<Document>();
casedata.Documents.AddRange(documents);
Run Code Online (Sandbox Code Playgroud)