Unten ist der Code, den ich benutze, aber er antwortet mit
Methode 'Boolean isUser (System.String)' hat keine unterstützte Übersetzung in SQL.
Irgendwelche Hilfe? Übrigens verwende ich linq to SQL Datenquelle
%Vor%Ich habe eine Lösung gefunden, um das Ergebnis der ersten Abfrage als Objekte abzufragen, aber das ist gut so, weil ich meine Daten zweimal durchlasse.
der aktualisierte Code, der am Ende funktioniert hat, nachdem jemand wie von Anders Abel empfohlen verwendet hat
%Vor%Linq-to-sql übersetzt die Abfrage in SQL. Es kann nur eine begrenzte Menge eingebauter Funktionen übersetzen. Sie müssen Ihre Abfrage so umschreiben, dass sie keine eigene Funktion enthält.
Eine vollständige Liste der von linq-to-sql unterstützten Funktionen und Operatoren finden Sie unter MSDN .
Sie können SqlMethods.Like()
verwenden, um zu prüfen, ob das Feld nur Ziffern enthält. Siehe T-SQL IsNumeric () und Linq-to-SQL für ein Beispiel.
Das Problem besteht darin, dass Sie nur Dinge verwenden können, die in der Datenbank funktionieren, da die Abfrage in der Datenbank ausgeführt werden muss. Der C # -Code in Ihrer isUser
-Methode kann nicht in der Datenbank ausgeführt werden .
Sie müssen es neu schreiben, ohne diese Funktion zu benutzen. Vielleicht haben Sie eine Tabelle, die Benutzer nach IDs auflistet, denen Sie beitreten können?
Wäre einfacher für Sie, wenn Sie ID
für Sie validieren möchten, zum Beispiel where ID > 0
, Ergebnisse wiederherstellen und nach der resultierenden Sammlung den gewünschten hypothetischen Filter mit
Ursache, ich vermute, es führt irgendwie komplexere Validierung durch.
Wichtig ist, dass aus DB-Ergebnissen weniger möglich sind, um Datenübertragungslatenz zu vermeiden.
Alternativ können Sie jede SQL-UDF (benutzerdefinierte Funktion) innerhalb von LINQ-Abfragen wie gp.isUser(x.ID)
aufrufen, so dass Sie diese Funktion isUser
als SQL-UDF definieren können, etwa wie folgt:
Dann müssen Sie diese UDF in Ihrer .DBML
-Datei definieren , die andere Tabellen enthält und Prozeduren Definitionszuordnungen. Dann können Sie In Ihrer LINQ-Abfrage diese Zeile oder jede andere benutzerdefinierte Funktion aufrufen p>
%Vor%
Tags und Links .net c# linq linq-to-sql