web-dev-qa-db-ja.com

C#でリストが空どうどうか確認する

データベースから生成されたオブジェクトのリストがあります。リストが空の場合はエラーメッセージを表示し、それ以外の場合はグリッドビューを表示する必要があります。

C#でList<T>が空かどうかを確認するにはどうすればよいですか?

86
lakshganga

何故なの...

bool isEmpty = !list.Any();
if(isEmpty)
{
    // error message
}
else
{
    // show grid
}

GridViewには EmptyDataTemplate もあり、これはデータソースが空の場合に表示されます。これはASP.NETのアプローチです。

<emptydatarowstyle backcolor="LightBlue" forecolor="Red"/>

<emptydatatemplate>

  <asp:image id="NoDataErrorImg"
    imageurl="~/images/NoDataError.jpg" runat="server"/>

    No Data Found!  

</emptydatatemplate> 
107
Tim Schmelter

使用しているリストの実装がIEnumerable<T>で、Linqがオプションの場合は、Anyを使用できます。

if (!list.Any()) {

}

それ以外の場合、通常は配列とコレクション型にそれぞれLengthまたはCountプロパティがあります。

60
Grant Thomas
    If (list.Count==0){
      //you can show your error messages here
    } else {
      //here comes your datagridview databind 
    }

あなたのdatagridをfalseに見えるようにし、elseセクションで見えるようにすることができます。

21
Kuzgun

Count()メソッドを使用してどうですか。

 if(listOfObjects.Count() != 0)
 {
     ShowGrid();
     HideError();
 }
 else
 {
     HideGrid();
     ShowError();
 }
12

単純なIFステートメントを使うべきです

List<String> data = GetData();

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

PopulateGrid();
ShowGrid();
8
var dataSource = lst!=null && lst.Any() ? lst : null;
// bind dataSource to gird source
6
TalentTuner

gridview自体には、バインド先のデータソースが空かどうかをチェックするメソッドがあります。それを使用すると、他のものを表示できます。

3
Baahubali

Gridviewを使用している場合は、空のデータテンプレートを使用します。 http://msdn.Microsoft.com/ja-jp/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>
0