C# 检查viewbag列表是否为null或空
我无法检查我的列表长度是否为0。如果我删除了or的第二部分,代码就会起作用;仅检查列表是否为空C# 检查viewbag列表是否为null或空,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我无法检查我的列表长度是否为0。如果我删除了or的第二部分,代码就会起作用;仅检查列表是否为空 @{ @if( ViewBag.somelist != null || Enumerable.Count(ViewBag.somelist) == 0) { <p>list not null or empty</p> } @else { <p>list is empty</p>
@{
@if( ViewBag.somelist != null || Enumerable.Count(ViewBag.somelist) == 0)
{
<p>list not null or empty</p>
}
@else
{
<p>list is empty</p>
}
}
此外,用于检查列表是否为空的可交换项:
>=0,您应该可以在此处使用,将注释中提到的
&
替换为&
,因为您正在检查列表是否为空和是否为空:
@{
@if(ViewBag.somelist != null && ViewBag.somelist.Any())
{
<p>list not null or empty</p>
}
@else
{
<p>list is empty</p>
}
}
@{
@if(ViewBag.somelist!=null&&ViewBag.somelist.Any())
{
列表不为null或空
}
@否则
{
列表为空
}
}
您可以安全地调用它,因为如果
somelist
为null,执行将永远不会到达该点。代码的问题是|运算符。对于|运算符,当第一条语句为true或false时,将始终执行第二条语句。在您的例子中,如果ViewBag.somelist为null,第二条语句也将被执行,然后它将抛出ArgumentNullException。要克服此问题,请使用&&代替|。它将充当短路,当第一条语句为真时,只有第二条语句才会执行,否则它的执行将移到下一行。这只是检查列表是否为空。我的代码已经做到了。我还想检查列表的长度是否等于零,如果不检查列表的长度!=null或列表计数大于0,不等于零。或者,如果(非null且计数>0)我的viewbag是在我的代码行中的某个位置创建的,则会出现这种情况。它并不总是存在。这就是我检查它是否为空的原因。然而,一旦它被创建。如果删除了足够的索引使列表长度为零,我想检查列表是否为空
@{
@if(ViewBag.somelist != null && ViewBag.somelist.Any())
{
<p>list not null or empty</p>
}
@else
{
<p>list is empty</p>
}
}