LINQ to SQL und Null-Strings, wie verwende ich Contains?
Hier ist die Abfrage
from a in this._addresses
where a.Street.Contains(street) || a.StreetAdditional.Contains(streetAdditional)
select a).ToList<Address>()
wenn beide Eigenschaften in der where-Klausel Werte dies funktioniert gut, aber wenn zum Beispiel, ein.StreetAdditional null ist (fast immer), bekomme ich eine null-Verweis-Ausnahme.
Gibt es eine Arbeit um?
Dank,
InformationsquelleAutor der Frage Oakcool | 2009-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das offensichtlichste:
Alternativ könnten Sie schreiben eine Erweiterung Methode Enthält, die akzeptiert einen null-argument und ohne Fehler. Einige mögen sagen, dass es ist nicht so schön zu haben wie eine Methode, weil es aussieht wie ein normaler Methodenaufruf, darf aber für null-Werte (und damit die Einstellung neben der normalen null-checking-Verfahren).
InformationsquelleAutor der Antwort driis
Verwende ich den null-coalescing operator...
InformationsquelleAutor der Antwort Yuliy
Müssen Sie zuerst überprüfen, wenn
StreetAdditional
istnull
.Versuchen
Dies funktioniert, weil
&&
ist ein shortcut-Betreiber und wenna != null
ergibt false, wird der zweite Ausdruck mit dernull
-Wert nicht ausgewertet werden, da das Ergebnisfalse
sowieso.InformationsquelleAutor der Antwort Dario
Ich würde eine Erweiterung Methode, um eine leere Sequenz, wenn null-und dann rufen Sie enthält eine Methode.
InformationsquelleAutor der Antwort Vasu Balakrishnan
Ich glaube nicht, dass SqlServer gab Sie eine null exception. Wenn ja, dann dieser code ist eindeutig nicht ausgeführt, obwohl LinqToSql (wie Sie markiert haben, die Frage).
string.Enthält wäre in sql übersetzt ist
like
die hat überhaupt keine Probleme mit null-Werten.InformationsquelleAutor der Antwort Amy B
Überprüfen, um sicherzustellen, dass die Eigenschaften nicht null
Wenn die null-check false ist, dann wird die zweite Klausel nach der && wird nicht ausgewertet.
InformationsquelleAutor der Antwort Yaakov Ellis
InformationsquelleAutor der Antwort Dimi Toulakis
Möchten Sie vielleicht zu prüfen, um sicherzustellen, dass die Variablen Straße und streetAdditional sind nicht null. Ich rannte über das gleiche problem und setzen Sie Sie auf eine leere Zeichenfolge schien mein problem zu lösen.
InformationsquelleAutor der Antwort Brian
Eine Sache zu beachten ist, dass der null sollten zuerst ausgewertet werden.
()
InformationsquelleAutor der Antwort user5636696