2012-03-29 10 views
1

Ich sah diese Linq int to string veröffentlichen, und versuchte esLinq zu Einheit auf Zeichenfolge beitreten gleich int

  var personalInfoQuery = from t in crnnsupContext.Tombstones 
            join i in crnnsupContext.InitialEducations on t.InitialEducation equals SqlFunctions.StringConvert((double)i.InitalEducationID) 
            where t.RegNumber == 25952 
            select new CPersonalInfo 
            { 
             Tombstone = t, 
             InitialEducation = i 
            }; 

in der Datenbank t.InitialEducation ist char, i.InitalEducationID int ist, aber das abgerufene Ergebnis ist null. Ich bin mir ziemlich sicher, dass der Wert im SQL-Server nicht leer ist. Also ich denke, das Problem ist SqlFunctions.StringConvert((double)i.InitalEducationID)

wenn ich die Join-Anweisung entfernen, bekam es die Informationen dieser Person.

Weiß jemand warum. Danke

+0

Ich nehme an, weil InitialEducation ein Int kein String ist? – Phil

+0

t und ich sind die Instanz Ihrer Klasse. Sie vermissen die Eigenschaft Name. Ich meine t.VariableName. – Pankaj

+0

@PankajGarg was meinst du? Kannst du mir ein Beispiel geben? – pita

Antwort

1

Endlich den Grund finden !! ist nvarchar (1) in der Datenbank, i.InitalEducationID ist int, nachdem ich zu SqlFunctions.StringConvert((double)i.InitialEducationID, 1) geändert habe, funktioniert es!

"1" ist die Länge der zurückgegebenen Zeichenfolge, die Standardlänge ist 10, ich denke, es gibt etwas mehr Platz.

0

Da Sie die SqlFunctions.StringConvert Methode verwenden, nehme ich an, dass Sie EF als den zugrunde liegenden LINQ-Anbieter verwenden, nicht?

Aus den gegebenen Informationen scheint es, dass Sie eine 1 zu viele Join auf diesen Eigenschaften tun möchten. Der Code, den Sie geschrieben haben könnten verschmelzen (nicht genügend Informationen über den Kontext, sicher zu sein) als Innen in SQL JOIN, so die LINKEN zu erzwingen Verhalten JOIN, können Sie einen .DefaultIfEmpty() Anruf hinzufügen:

crnnsupContext.InitialEducations.DefaultIfEmpty()

+0

aber ich bin sicher, das Ergebnis sollte nicht leer sein – pita