2010-12-03 25 views
1

LINQ to Entity Framework 4.0. Serveur SQL.Entité 4.0 Valeur de diffusion en tant que DateTime

J'essaye de renvoyer une liste d'objets et une des colonnes dans la base de données est varchar (255) et contient des dates. J'essaie de donner la valeur à datetime, mais je n'ai pas encore trouvé la solution.

Exemple:

List<MyObject> objects = (from c in context.my_table 
           where c.field_id == 10 
           select new MyObject() 
           { 
            MyDate = c.value // This is varchar, want it to be datetime 
           }).ToList(); 

est-ce pas possible?

Mise à jour. C'est LINQ to Entity. Lorsque vous essayez de convertir en DateTime je reçois:

LINQ to Entities does not recognize the method 'System.DateTime ToDateTime(System.String)' method, and this method cannot be translated into a store expression. 

Répondre

1

La réponse est que c'est actuellement impossible avec Entity Framework. Avec LINQ lui-même, il n'est pas pris en charge par Entity Framework.

0

Vous voulez DateTime.Parse (c.value) qui prendra une chaîne contenant une date et créer un objet DateTime hors de celui-ci.

+2

Je reçois cette erreur: LINQ to Entities ne reconnaît pas la méthode 'System.DateTime Parse (System.String)' méthode, et cette méthode ne peut être traduit dans une expression de magasin. – GregInWI2

0

vous pouvez faire comme ceci Date = DateTime.Parse (texte)

0

read, Et le meilleur pari serait d'utiliser votre résultat et conversion en temps de date. Comme ci-dessous,

static void Main(string[] args) 
    { 
     Console.WriteLine(getme()); 
     Console.ReadLine(); 
    } 
    private static DateTime getme() 
    { 
     List<string> ss = new List<string>(); 
     ss.Add("11/11/2010"); 
     var r = from l in ss 
       select new { date = Convert.ToDateTime(l) }; 



     return r.FirstOrDefault().date; 

    } 
+0

Ceci est le cadre d'entité. Je renvoie des données de SQL Server. Cette version 4.0. Convert ne fonctionne pas, me donne une erreur. J'ai mis à jour ma question avec le message d'erreur. – GregInWI2

+0

Les dates sont toutes bonnes, Entity Framework jamais pris en charge Convert.To. – GregInWI2

0

vous pouvez convertir en une liste, puis appliquer la conversion ... l'inconvénient est lorsque vous appelez .ToList() cela va apporter toutes les données de DB, puis faire la conversion côté hôte au lieu de côté de la base de données. Dans ce cas sera OK, mais dans d'autres cas où vous utilisez cette conversion pour le filtre sera coûteux. Voici votre échantillon modifié:

List<MyObject> objects = (from c in context.my_table 
          where c.field_id == 10).ToList(). 
          Select(c=>new MyObject() 
          { 
           MyDate = Convert.ToDateTime(c.value) 
          }).ToList(); 

Blog: http://jaider.net