Ich habe ein Problem mit einer linq-Abfrage. Ich habe das schon vorher benutzt, aber ich kann nicht verstehen, was jetzt falsch sein könnte.
Fehler
Die beste überladene Methodenübereinstimmung für 'System.Collections.Generic.List.Contains (int)' hat einige ungültige Argumente
Argument '1': Kann nicht von 'int' konvertieren? zu 'int'; bezieht sich auf die Where-Klausel von rTestResults
Code:
%Vor%Irgendeine Idee was ist los?
Jede Hilfe geschätzt,
Danke
Das liegt daran, dass das ID-Feld NULL-Werte zulässt, während die Elemente in der Auflistung nicht zulässig sind.
Sie haben wahrscheinlich vergessen, es als nicht-null in der Datenbank zu markieren, damit der Designer es auf diese Weise erzeugt.
Beste Sache Markierung in der DB ist not-null und refresh Daten.
Außerdem hat U nicht angegeben, welche LINQ Sie verwenden, vorausgesetzt, Sie linq die DB, ich bin mir nicht sicher, ob die Extensions-Methode Contains in Linq to Sql oder Linq to Entities funktioniert, Sie erhalten möglicherweise eine weitere NotSupportedException, selbst nachdem Sie die obigen Fehler behoben haben.
Verwenden Sie daher entweder zwei Abfragen, die erste, um auf die Datenbank zuzugreifen, und die zweite, um den Wert aus der geladenen Sammlung abzurufen, oder erwägen Sie die Verwendung von 'Enthält ()" Workaround mit Linq zu Entities? .
Und wenn Sie linq-to-Objekte verwenden und Sie sich nicht um den oben genannten Papierkorb kümmern, verwenden Sie einfach Folgendes:
%Vor% Seit der Ausnahme in System.Collections.Generic.List.Contains(int)
kann ich erraten, dass die mDataContext.TestSamplesViews.PlateID
Nullable ist.
Wenn Sie einfach eine einfache Korrektur wünschen und / oder PlateID
nicht ändern können, damit es nicht mehr nullfähig ist, können Sie zuerst prüfen, ob es einen Wert hat: