Mam listę obiektów wypełnionych z bazy danych. Muszę wyświetlić komunikat o błędzie, jeśli lista jest pusta, aw przeciwnym razie wyświetlić widok siatki.
Jak sprawdzić, czy a List<T>
jest pusty w C #?
c#
list
gridview
isnullorempty
lakshganga
źródło
źródło
if (list.Count == 0) { /* ... */ }
?if (!list.Any())
C# list isempty
dla którego jest całkowicie trafny. Uważam, że nieistotne części pytania powinny zostać usunięte i głosuję za ponownym otwarciem.Odpowiedzi:
Dlaczego nie...
GridView
Ma takżeEmptyDataTemplate
które jest wyświetlane, jeśli źródło danych jest pusta. To jest podejście w ASP.NET:źródło
list == null
najpierw?Jeśli implementacja listy, której używasz, jest,
IEnumerable<T>
a Linq jest opcją, możesz użyćAny
:W przeciwnym razie zazwyczaj masz właściwość
Length
lub odpowiednioCount
dla tablic i typów kolekcji.źródło
.Count
lub, co można zrobić, aby być szybszym niż sprawdzenie właściwości kolekcji, która śledzi aktualną długość lub liczbę? Jeśli masz tylko Enumerator, jest to oczywiście szybsze niż . Zobacz też: stackoverflow.com/questions/305092/… lub stackoverflow.com/questions/5741617/….Length
List
.Any()
.Any()
.Count() > 0
Any
sprawdza, czy pobieranie liczby jest tanie przed jej przetestowaniem, w przypadkach, gdy masz elementIListProvider<>
, który nie śledzi liczby, wyliczy zamiast tego raz.Możesz sprawić, że twój datagrid będzie widoczny jako fałszywy i będzie widoczny w sekcji else.
źródło
O(1)
operacja i nie ma żadnych iteracji wykonywanych w celu zliczania elementów. ZobaczList<T>.Count
.Any()
lepiej wyrażać intencje, a także być bardziej wydajnym, gdy nie wiesz, że masz rzeczywistyList<T>
.A co z korzystaniem z
Count
nieruchomości.źródło
null
. Zamiast tego powinna to być pusta kolekcja.Powinieneś użyć prostego
IF
stwierdzeniaźródło
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"); } } }
źródło
Sam gridview ma metodę, która sprawdza, czy źródło danych, z którym jest powiązany, jest puste, pozwala wyświetlić coś innego.
źródło
Jeśli używasz widoku siatki, użyj pustego szablonu danych: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.emptydatatemplate.aspx
źródło