Ich habe den folgenden Code insdie meine asp.net MVC Web-Anwendung: -Der Cast-to-Value-Typ 'Int32' ist fehlgeschlagen, da der materialisierte Wert null ist.
SystemInformation s = new SystemInformation()
{
AssetCount = new AssetCount() {
CustomerCount = entities.AccountDefinitions == null ? 0 : entities.AccountDefinitions.Count(),
RackCount = tms.TMSRacks == null ? 0 : tms.TMSRacks.Count(),
ServerCount = tms.TMSServers == null ? 0 : tms.TMSServers.Count(),
CustomCount = tms.CustomAssets==null? 0 : tms.CustomAssets.Sum(a => a.Quantity)
},
Aber zur Zeit, wenn eine der Enumerable leer ist, werde ich die folgende Fehlermeldung erhalten: -
The cast to value type 'Int32' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
Es ist, weil Int32 ist ein primitiver Typ kein Objekt und somit nicht Nullable. Versuchen Sie, was in diesem [Thema] vorgeschlagen wird (http://stackoverflow.com/questions/2152717/what-is-the-integer-reference-type-in-c). TL; DR: wenn RackCount (zum Beispiel) entweder mit der Syntax "int32? RackCount; 'oder' Nullable RackCount; ' –
Sidewinder94
@ Sidewinder94 Warum sollte er obwohl? Wenn 'tms.TMSRacks' null ist, speichert er 0. –
Sie sollten nicht alle diese Sammlungen Null an erster Stelle haben. Diese Kontrollen sollten nicht erforderlich sein. Denken Sie daran, * null * und * leer * sind zwei sehr unterschiedliche Dinge für eine Sammlung. – Servy