Ich habe eine Liste von Objekten aus einer Datenbank gefüllt. Ich muss eine Fehlermeldung anzeigen, wenn die Liste leer ist, und ansonsten eine Rasteransicht anzeigen.
Wie überprüfe ich, ob a List<T>
in C # leer ist?
c#
list
gridview
isnullorempty
Lakshganga
quelle
quelle
if (list.Count == 0) { /* ... */ }
?if (!list.Any())
C# list isempty
für das es vollständig zutreffend ist. Ich denke, irrelevante Teile der Frage sollten herausgeschnitten werden, und ich stimme dafür, wieder zu öffnen.Antworten:
Warum nicht...
Das
GridView
hat auch eine,EmptyDataTemplate
die angezeigt wird, wenn die Datenquelle leer ist. Dies ist ein Ansatz in ASP.NET:quelle
list == null
zuerst zu prüfen, ob ?Wenn die von Ihnen verwendete
IEnumerable<T>
Listenimplementierung und Linq eine Option ist, können Sie Folgendes verwendenAny
:Andernfalls haben Sie im Allgemeinen eine
Length
oderCount
-Eigenschaft für Arrays bzw. Auflistungstypen.quelle
.Count
oder.Length
Eigenschaft wie bei haben,List
was könnte.Any()
möglicherweise schneller sein, als die Eigenschaft der Sammlung zu überprüfen, die die aktuelle Länge oder Anzahl verfolgt? Wenn Sie nur einen Enumerator haben,.Any()
ist dieser natürlich schneller als.Count() > 0
. Siehe auch: stackoverflow.com/questions/305092/… oder stackoverflow.com/questions/5741617/…Any
überprüft, ob das Abrufen der Zählung vor dem Testen billig ist. In Fällen, in denen Sie eine habenIListProvider<>
, die die Zählung nicht verfolgt, wird sie stattdessen einmal aufgelistet.Sie können Ihr Datagrid falsch und im Abschnitt else sichtbar machen.
quelle
O(1)
Operation und es werden keine Iterationen zum Zählen von Elementen durchgeführt. SieheList<T>.Count
.Any()
Absichten besser auszudrücken und performanter zu sein, wenn Sie nicht wissen, dass Sie eine tatsächliche habenList<T>
.Was ist mit der Nutzung der
Count
Eigenschaft.quelle
null
. Es sollte stattdessen eine leere Sammlung sein.Sie sollten eine einfache
IF
Anweisung verwendenquelle
using System; using System.Collections.Generic; public class Program { public static void Main() { List<string> stringList = null; if (stringList.Count == 0) { Console.WriteLine("no items in collection"); } } }
quelle
gridview selbst verfügt über eine Methode, mit der überprüft wird, ob die Datenquelle, an die Sie sie binden, leer ist, und mit der Sie etwas anderes anzeigen können.
quelle
Wenn Sie eine Rasteransicht verwenden, verwenden Sie die leere Datenvorlage: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.emptydatatemplate.aspx
quelle