2015-08-22 12 views
6

Ich habe verschiedene stackoverflow Antwort angesehen, aber ich sehe nicht den Weg, meine Verbindung mit Linq zu beheben.Linq Query Type Inferenz fehlgeschlagen in den Aufruf an Join

2 Tische

var query = from tips in TblTips 
      where tips.Id == 30 
      join files in TblFiles on tips.Id equals files.Group 
      select new { tips, files }; 

Fehler:

Type inference failed in the call to Join 

Jetzt tips.Id ein int während files.Group ein varchar ist

ich versucht habe .Wert

zu tun
tips.id.Value  --> the word Value not working (most recent linqpad) 

(int)files.Group --> it doesn't like that ... 

Antwort

6

Problem ist, dass Sie cann ot Join Tabellenspaltenwerte nicht vom gleichen Typ!

Convert.ToInt32(column) should work in linqpad and your c# application just fine. 

(I in Pars gewickelt und hat eine ToList())

Dies sollte für Sie arbeiten, wenn Gruppenfolge und id ist int

var query = (from tips in TblTips 
      where tips.Id == 30 
      join files in TblFiles on tips.Id equals Convert.ToInt32(files.Group) 
      select new { tips, files }).ToList(); 

UPDATE:

pro OP, stimme ich ihm darin, dass es andere Werte in eine Zeichenfolge

konvertieren sollte
var query = (from tips in TblTips 
      where tips.Id == 30 
      join files in TblFiles on tips.Id.ToString() equals files.Group 
      select new { tips, files }).ToList(); 
+1

Ich denke, es wäre tatsächlich sicherer zu tun '' tips.Id.ToString() ist gleich files.Group'', wenn '' files.Group'' etwas anderes als eine ganze Zahl sein kann. – kmc059000

+0

Ok, das funktioniert, ich habe versucht, einen Int32.Parse zu machen, und das gab mir einen anderen Fehler. Danke! –