2017-06-28 2 views
-2

Comme je ne peux pas ajouter le code entier ici, je poste un extrait de justa. Je reçois et l'exception "System.ArgumentNullException" et une erreur qui ne peut pas convertir implicitement de Ins_ProjectTestCycleDet_Result à Project_List. J'ai commencé à obtenir cette erreur quand j'ai ajouté le dernier argument comme nul (après ST). S'il vous plaît aidez-moi à savoir quel est exactement le problème car même dans la base de données j'ai défini ce champ particulier comme Autoriser null.Obtenir system.ArgumentNullException sur FirstOrDefault()

Project_List objProject_List = new Project_List(); 
objProject_List.Proj_Bill_ID = Convert.ToInt32(PID); 

objProject_List = _OCB.Ins_ProjectTestCycleDet 
        (Convert.ToInt32(PID), TID, RID, ECY 
        , TT, Convert.ToDateTime(GD), Convert.ToDateTime(SD) 
        , Convert.ToDateTime(EED), Convert.ToDateTime(ED) 
        , null, Convert.ToDecimal(TP), Convert.ToDecimal(TE) 
        , Convert.ToDecimal(TDA), Convert.ToDecimal(TR), TCR, ST, null 
        ).FirstOrDefault(); 
+0

Ensuite '_OCB. Ins_ProjectTestCycleDet' renvoie null. –

+0

@PatrickHofman donc vous voulez dire son retour null donc l'exception? – beginner

+0

C'est ce que j'ai dit, n'est-ce pas? –

Répondre

1

Si cette exception se produit après avoir ajouté dernier paramètre null, que vous devez aller à la méthode Ins_ProjectTestCycleDet et vérifier comment ce paramètre est traité. Il y a 2 possibilités:

  1. Le système n'accepte pas null comme paramètre
  2. Ins_ProjectTestCycleDet (...) retourne null

Pour corriger le 1er cas, vous devez passer outre Ins_ProjectTestCycleDet (...) la logique si nulle sera acceptable ou fournira une valeur non nulle.

Pour résoudre 2 cas, vous pouvez changer l'expression à:

objProject_List = _OCB.Ins_ProjectTestCycleDet(...)?.FirstOrDefault(); 

Dans ce cas objProject_List sera nulle si _OCB.Ins_ProjectTestCycleDet(...) renvoie la valeur null

0

suggestion de restructuration Code:

Project_List objProject_List = new Project_List(); 
objProject_List.Proj_Bill_ID = Convert.ToInt32(PID); 

var projList = _OCB.Ins_ProjectTestCycleDet(Convert.ToInt32(PID), TID, RID, ECY, 
       TT, Convert.ToDateTime(GD), Convert.ToDateTime(SD), Convert.ToDateTime(EED), Convert.ToDateTime(ED), null 
       , Convert.ToDecimal(TP), Convert.ToDecimal(TE), Convert.ToDecimal(TDA), Convert.ToDecimal(TR), TCR, ST, null); 

if(projList != null 
    && projList.Count > 0 
    && projList.FirstOrDefault() is Project_List) 
{ 
    objProject_List = projList.FirstOrDefault(); 
}