将空的IEnumerable <>传递给构造函数

Seb*_*Seb 0 .net c# linq

根据数据库中的当前内容,会发生两件事.

  1. 如果表buildingDefine不为空,则将此表传递给构造函数.

  2. 否则将buildingDefine传递给构造函数.

这是我对数据库的检查:

        //Is there content in buildingDefineTable?
if (!_bDefine.Any())
{
    int currentBuildingId = ((BuildingTable)((ListView)sender).SelectedItem).Id;

    var currentBool = from bla in _building
                        where bla.Id == currentBuildingId
                        select bla.BuildingBool;

    //Is the buildingBool false? 
    if (!currentBool.First())
    {
        var currentBuildingDefine = from BuildingDefineTable in _bDefine
                                                    where BuildingDefineTable.buildingId == ((BuildingTable)((ListView)sender).SelectedItem).Id
                                                    select BuildingDefineTable;


        await Navigation.PushAsync(new DefineBuilding(currentBuildingDefine));
    }    
    else
    {
        //Do something here. 
    }           

}
//No content in buildingDefineTable
else
{
    await Navigation.PushAsync(new DefineBuilding(new IEnumerable<_bDefine> bDefineTable ));
}
Run Code Online (Sandbox Code Playgroud)

if语句工作正常,但是每当数据库不包含表中的任何信息时,我都无法传递表的空列表.

这是我的构造函数:

public DefineBuilding(IEnumerable<BuildingDefineTable> bDefineTable)
{
    if (bDefineTable == null) throw new ArgumentNullException();

    BindingContext = bDefineTable;
    //More code here
}
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

bas*_*hrc 10

使用Enumerable.Empty

var x = new DefineBuilding(Enumerable.Empty<BuildingDefineTable>());
Run Code Online (Sandbox Code Playgroud)