2010-01-21 4 views
0

Je suis en train de faire une jointure sur deux tables en fonction de plusieurs conditions, le problème est que je ne suis pas en mesure de comparer les champs de date. La date est stockée au format datetime dans DB et je veux tous les enregistrements à une date particulière, quand je le fais comme indiqué dans le code ci-dessous, je reçois cette exception .. Méthode 'System.String ToShortDateString()' n'a pas pris en charge traduction vers SQL.Joindre des tables multiples conditions - comparer des dates - Linq

P.S cela fait partie d'une grande requête ..

string dt = "10/14/2009";  


using (ReportGeneratorDataContext db = new ReportGeneratorDataContext()) 
     { 
      var r = from f in db.f 
        join a in db.a 
        on new { x = f.ID, y = f.date.ToShortDateString() } equals new { x = a.ID, y = dt } 
        select f.Name; 
     } 

solutions de contournement?

+0

Qu'est-ce que dt? D'où est ce que ça vient? Est-ce une chaîne? –

+0

oups .. oui dt est une chaîne.Mise à jour! –

Répondre

0

Je voudrais essayer de

  • soit définir une vue dans le DB avec sa propre Linq à la cartographie SQL
  • définir une colonne calculée (soit dans la table ou dans une vue) du tableau a qui contient la chaîne convertie à une date (sur le côté DB ...)
  • faire la jointure en dehors de la base de données (par exemple obtenir la croix complète se joindre et de faire un where sur cette énumération)

Je suis conscient, qu'aucune de ces options n'est vraiment satisfaisante, mais je suppose que c'est un délai de Linq-To-Sql ...

Questions connexes