web-dev-qa-db-fra.com

Vérifier si la liste est vide en C #

J'ai une liste d'objets remplis à partir d'une base de données. Dans le cas contraire, je dois afficher un message d'erreur si la liste est vide et afficher une vue en grille.

Comment vérifier si un List<T> est vide en C #?

89
lakshganga

Pourquoi pas...

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

GridView a aussi un EmptyDataTemplate qui est affiché si la source de données est vide. C'est une approche dans ASP.NET:

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

<emptydatatemplate>

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

    No Data Found!  

</emptydatatemplate> 
111
Tim Schmelter

Si la liste que vous utilisez est IEnumerable<T> et que Linq est une option, vous pouvez utiliser Any:

if (!list.Any()) {

}

Sinon, vous avez généralement une propriété Length ou Count sur les tableaux et les types de collection, respectivement.

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

Vous pouvez rendre votre grille de données visible false et la rendre visible dans la section else.

21
Kuzgun

Qu'en est-il de l'utilisation de la méthode Count ().

 if(listOfObjects.Count() != 0)
 {
     ShowGrid();
     HideError();
 }
 else
 {
     HideGrid();
     ShowError();
 }
13
Jeroen van Langen

Vous devriez utiliser une simple instruction IF

List<String> data = GetData();

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

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

gridview lui-même a une méthode qui vérifie si la source de données à laquelle vous le liez est vide, elle vous permet d'afficher autre chose.

3
Baahubali

Si vous utilisez un gridview, utilisez le modèle de données vide: 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>
0
David MacCrimmon