2009-10-31 11 views
0

Je renvoie IQueryable<Customer> à l'autre méthode pour certaines opérations d'interrogation. La méthode de retour ressemble à:Attribuer des objets NULL pour renvoyer IQueryable

return from cust in _dbCustList 
       select new Customer 
       { 
        CustomerId = cust.Customer_Id, 
        FirstName= cust.First_Name, 
        LastName= cust.Last_Name, 
        DOB= cust.Date_Of_Birth, 
        LoginTime = cust.Login_Time ?? new TimeSpan(0, 0, 0); 
       }; 

Dans le résultat ci-dessus, cust.Login_Time est la propriété annulable.

Lorsque je tente d'interroger le résultat ci-dessus, il génère une erreur:

Method 'System.TimeSpan GetTimeSpan(System.Nullable`1[System.TimeSpan])' has no supported translation to SQL. 

Comment résoudre cette erreur?

Répondre

0

J'interrogerait dans un type anonyme puis mapper le résultat de votre objet métier en mémoire:

var q = from cust in _dbCustList 
     select new 
     { 
      cust.Customer_Id, 
      cust.First_Name, 
      cust.Last_Name, 
      cust.Date_Of_Birth, 
      cust.Login_Time 
     }; 

return from cust in q.AsEnumerable() 
     select new Customer 
     { 
      CustomerId = cust.Customer_Id, 
      FirstName= cust.First_Name, 
      LastName= cust.Last_Name, 
      DOB= cust.Date_Of_Birth, 
      LoginTime = cust.Login_Time ?? TimeSpan.Zero; 
     }; 
+0

Celle-ci a fonctionné pour mon scénario – Prasad

0

Pourquoi utilisez-vous la fonction de vérification des valeurs nulles?

Lorsque vous supprimez le null, vérifiez que la requête écrite est traduite dans une requête SQL et sera exécutée. Maintenant, vous avez le résultat que vous pouvez faire toute la magie que vous voulez ...

+0

il renvoie une erreur, quand je ne spécifie pas cela: Impossible de convertir implicitement le type 'System.TimeSpan?' à 'System.TimeSpan'. Une conversion explicite existe (manque-t-il une distribution?) – Prasad

+0

Ensuite, interrogez tout (sélectionnez cust) ou modifiez votre classe Customer. – ollifant

+0

Cette propriété/colonne provient de la table (DataContext) et je l'attribue à la classe client spécifique à l'application. En l'assignant à la classe client, je reçois cette erreur – Prasad