2013-09-18 2 views
32

У меня есть список объектов, заполненных из базы данных. Мне нужно отобразить сообщение об ошибке, если список пуст и в противном случае отобразить вид сетки.Проверьте, нет ли списка в C#

Как проверить, нет ли в C# List<T>?

+4

Так что случилось с использованием 'если (list.Count == 0) {/ * ... * /}'? –

+5

Или 'if (! List.Any())' – Tharwen

+0

Спасибо, что сработал! – lakshganga

ответ

63

Почему бы не ...

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> 
+1

Примечание: второй подход предполагает использование ASP.NET. –

+0

Не было бы лучше проверить, сначала ли «список == null»? –

9

Как насчет использования метода Count().

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

Count - свойство, а не метод –

+4

@MoslemBenDhaou Зависит от того, открыт ли метод расширения Linq или он вызван или является родным для объекта. –

+0

@GrantThomas Я воспринял это как список , но да, вы правы. –

35

Если реализация список, который вы используете IEnumerable<T> и Linq вариант, вы можете использовать Any:

if (!list.Any()) { 

} 

В противном случае вы обычно имеют Length или Count собственности на массивы и типы коллекций соответственно ,

+4

Как быстрая заметка: list.Any имеет гораздо лучшую производительность, чем счет. –

3

gridview сам имеет метод, который проверяет, является ли источник данных, с которым вы привязываете его, пуст, он позволяет отображать что-то еще.

0

Если вы используете 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> 
+0

Это очень специфичный ASP.NET. –

+0

Я не ребята winforms, но не gridview asp.net. Это форматы данных в формах? –

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

Вы можете сделать свой DataGrid видимым ложным и сделать его видимым на участке еще.

+2

Кажется, что это будет тратить много времени на подсчет всех членов. – NetMage

5

Вы должны использовать простой IF заявление

List<String> data = GetData(); 

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

PopulateGrid(); 
ShowGrid(); 
4
var dataSource = lst!=null && lst.Any() ? lst : null; 
// bind dataSource to gird source 
Смежные вопросы