这是确定何时返回所描述方案的空列表的好方法吗?

Sto*_*tip 0 c# linq getter list

我有一个名为Division的类,它包含有关Subdivisions(在内部List中)的信息,包括每个细分的分类代码.在Subdivision类中,代码存储为int.在Division类中,List用于存储所有代码.有时会有一个没有细分的部门,因此没有代码.或者,无论出于何种原因,可能没有为细分设置代码.因此它的默认值为0.我不想返回列表,除非它有实际代码.

public List<int> AllCodesList
{
    get
    {
        return (from subdivision in SubdivisionInfoList
                where subdivision.code > 0 
                select subdivision.code).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

Gro*_*mer 5

如果您想要它返回null,请执行以下操作:

public List<int> AllCodesList
{
    get
    {
        List<int> subDivisions = null;
        if (SubdivisionInfoList.Any(s => s.code > 0))
        {
            subDivisions = (from subdivision in SubdivisionInfoList
                where subdivision.code > 0 
                select subdivision.code).ToList();
        }
        return subDivisions;
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,我个人不是这个的粉丝,我宁愿返回一个空列表.在对列表执行任何操作(如果有任何返回)之前调用此属性时,必须确保进行空检查.

乔治的建议:

public List<int> AllCodesList
{
    get
    {
        var subDivisions = (from subdivision in SubdivisionInfoList
                            where subdivision.code > 0 
                            select subdivision.code).ToList();

        if (subDivisions.Count == 0)
        {
            subDivisions = null;
        }

        return subDivisions;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我冒昧地编辑了我的建议:)(ps你可以使用Count作为`List <T>`的属性,count()也可以工作,因为IEnumerable <T>已定义(并在内部检查我相信的计数属性). (2认同)