我有一个通用列表对象。我需要检查这个列表是否为空。
在C#中,如何检查List<T>
是否为空?
Enumerable.Any
:bool isEmpty = !list.Any();
if(isEmpty)
{
// ...
}
如果列表可能为 null
,那么您可以使用:
bool isNullOrEmpty = list?.Any() != true;
list == null
不是最好的方法吗? - ᴍᴀᴛᴛ ʙᴀᴋᴇʀ如果您正在使用的列表实现是 IEnumerable<T>
,并且 Linq 是一种选择,您可以使用 Any
:
if (!list.Any()) {
}
否则,通常在数组和集合类型上有一个Length
或Count
属性。
List
的.Count
或.Length
属性,那么.Any()
可能怎么比检查该集合的长度或计数属性更快呢?如果你只有一个枚举器,那么.Any()
当然比.Count() > 0
快。参见:https://dev59.com/g3VC5IYBdhLWcg3wZwTj或https://dev59.com/PW025IYBdhLWcg3w4qEx?noredirect=1&lq=1 - nooxAny
方法在测试计数值前会检查检索计数值是否廉价。如果你有一个不跟踪计数值的 IListProvider<>
,它将枚举一次而不是多次。 - NetMage If (list.Count==0){
//you can show your error messages here
} else {
//here comes your datagridview databind
}
您可以将数据网格的可见性设置为 false,并在 else 部分将其设置为可见。
Any()
来更好地表达意图,并且在您不知道是否有实际的 List<T>
时性能更佳。 - NetMage那么使用 Count
属性怎么样呢?
if(listOfObjects.Count != 0)
{
ShowGrid();
HideError();
}
else
{
HideGrid();
ShowError();
}
null
,而应该是一个空的集合。 - Jeroen van Langen你应该使用简单的IF
语句。
List<String> data = GetData();
if (data.Count == 0)
throw new Exception("Data Empty!");
PopulateGrid();
ShowGrid();
data
已经被定义。 - Moslem Ben Dhaouvar dataSource = lst!=null && lst.Any() ? lst : null;
// bind dataSource to gird source
GridView本身有一个方法,可以检查您要绑定到它的数据源是否为空,它允许您显示其他内容。
<asp:gridview id="CustomersGridView"
datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true"
runat="server">
<emptydatarowstyle backcolor="LightBlue"
forecolor="Red"/>
<emptydatatemplate>
<asp:image id="NoDataImage"
imageurl="~/images/Image.jpg"
alternatetext="No Image"
runat="server"/>
No Data Found.
</emptydatatemplate>
</asp:gridview>
if (list.Count == 0) { /* ... */ }
有什么问题? - Bart van Nieropif (!list.Any())
。 - Tharwen