165

我有一个通用列表对象。我需要检查列表是否为空。

如何List<T>在 C# 中检查 a 是否为空?

4

8 回答 8

171

您可以使用Enumerable.Any

bool isEmpty = !list.Any();
if(isEmpty)
{
    // ...
}  

如果列表可能是null您可以使用:

bool isNullOrEmpty = list?.Any() != true;
于 2013-09-18T08:22:07.063 回答
93

如果您使用的列表实现是IEnumerable<T>并且 Linq 是一个选项,您可以使用Any

if (!list.Any()) {

}

否则,您通常分别在数组和集合类型上有一个Lengthor属性。Count

于 2013-09-18T08:22:22.827 回答
38
    If (list.Count==0){
      //you can show your error messages here
    } else {
      //here comes your datagridview databind 
    }

您可以使您的数据网格可见 false 并使其在 else 部分可见。

于 2013-09-18T08:24:23.883 回答
23

怎么用Count物业。

 if(listOfObjects.Count != 0)
 {
     ShowGrid();
     HideError();
 }
 else
 {
     HideGrid();
     ShowError();
 }
于 2013-09-18T08:22:15.853 回答
11

你应该使用一个简单的IF语句

List<String> data = GetData();

if (data.Count == 0)
    throw new Exception("Data Empty!");

PopulateGrid();
ShowGrid();
于 2013-09-18T08:24:23.930 回答
8
var dataSource = lst!=null && lst.Any() ? lst : null;
// bind dataSource to gird source
于 2013-09-18T08:25:10.193 回答
4

gridview 本身有一个方法可以检查您绑定到的数据源是否为空,它可以让您显示其他内容。

于 2013-09-18T08:22:41.087 回答
1

如果您使用的是 gridview,请使用空数据模板:http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.emptydatatemplate.aspx

      <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>
于 2013-09-18T08:24:03.397 回答