2016-06-10 3 views
0

ich in einem Datagridview diesen Code als Filter bin mit:System.NotSupportedException, während sie von ID C# zu filtern versuchen

private void consultarPorCriterio() 
    { 

     var inspec = from ins in entities.Inspeccions 
         where (ins.Ralladuras.StartsWith(txtTextoABuscar.Text) || 
           ins.Repuesta.StartsWith(txtTextoABuscar.Text)|| 
           ins.ID.ToString().StartsWith(txtTextoABuscar.Text) 
          ) 
         select ins; 
     dgvInspeccion.DataSource = inspec.ToList(); 
    } 

Es filtert, wenn ich zu entfernen:

ins.ID.ToString().StartsWith(txtTextoABuscar.Text).

IF I don‘ t entferne diesen Teil des Codes Ich bekomme diesen Fehler:

Exception not handled... 'System.NotSupportedException' in mscorlib.dll

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

Weiß jemand, was mache ich falsch?

+0

Weil es nicht zu T-SQL, Linq to Entities übersetzt werden könnte konnte nicht erkennen Sehen Sie sich diese Antwort an: http://stackoverflow.com/a/34061692/2946329 –

+0

Ich habe diesen Code von meinem Lehrerprogramm genommen, in seinem Programm macht er dasselbe, wie ich es versuche, ich meine es Nach ID filtern. Warum funktioniert es für ihn und nicht für mich? –

+0

Was ist der zugrunde liegende Datentyp von ins.ID? – tolanj

Antwort

0

können Sie SqlFunctions.StringConvert verwenden int String zu konvertieren, mit geringfügiger Änderung des Code am Ende wie folgt sein:

SqlFunctions.StringConvert((double)ins.ID).StartsWith(txtTextoABuscar.Text) 
+0

Ich habe es versucht, es filtert, aber Datagridview zeigt nichts. –

+0

Sind Sie sicher, dass Ihre neue Abfrage Daten zurückgibt? Weil der Teil, wo Sie Ihre Datagridview binden, in Ordnung scheint. – krish