Controleer of de lijst leeg is in C#

Ik heb een lijst met objecten die zijn ingevuld vanuit een database. Ik moet een foutmelding weergeven als de lijst leeg is en anders een rasterweergave.

Hoe controleer ik of een List<T>leeg is in C#?


Antwoord 1, autoriteit 100%

Waarom niet…

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

De GridViewheeft ook een EmptyDataTemplatedie wordt weergegeven als de gegevensbron leeg is. Dit is een benadering in ASP.NET:

<emptydatarowstyle backcolor="LightBlue" forecolor="Red"/>
<emptydatatemplate>
  <asp:image id="NoDataErrorImg"
    imageurl="~/images/NoDataError.jpg" runat="server"/>
    No Data Found!  
</emptydatatemplate> 

Antwoord 2, autoriteit 53%

Als de lijstimplementatie die u gebruikt IEnumerable<T>is en Linq een optie is, kunt u Any:

gebruiken

if (!list.Any()) {
}

Anders heb je over het algemeen een eigenschap Lengthof Countvoor respectievelijk arrays en verzamelingstypen.


Antwoord 3, autoriteit 21%

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

U kunt uw datagrid zichtbaar onwaar maken en zichtbaar maken in de else-sectie.


Antwoord 4, autoriteit 14%

Hoe zit het met het gebruik van de eigenschap Count.

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

Antwoord 5, autoriteit 7%

U moet een eenvoudige IF-instructie gebruiken

List<String> data = GetData();
if (data.Count == 0)
    throw new Exception("Data Empty!");
PopulateGrid();
ShowGrid();

Antwoord 6, autoriteit 5%

var dataSource = lst!=null && lst.Any() ? lst : null;
// bind dataSource to gird source

Antwoord 7, autoriteit 2%

gridview zelf heeft een methode die controleert of de databron waaraan je het bindt leeg is, het laat je iets anders weergeven.


Antwoord 8

Als je een rasterweergave gebruikt, gebruik dan de lege gegevenssjabloon: 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>

Other episodes