Podczas używania linq do encji wykonujących porównania łańcuchów będą ignorowane białe spacje.Linq do Entity porównując ciągi ignoruje białe przestrzenie
W mojej tabeli mam kolumnę nchar (10), więc wszelkie zapisane dane, jeśli nie ma ona 10 znaków, wypełnią resztę pustymi polami. Poniżej porównuję "ncharTextColumn" z ciągiem "Four"
. I nawet pomyślał ncharText wyniesie "Four "
Wynika to w meczu i zmienna „wynik” będzie zawierać 1 rekord
TestEntities1 entity = new TestEntities1();
var result = entity.Table_1.Where(e => e.ncharText == "Four");
Czy istnieje wyjaśnienie tego i sposób obejść albo ja będziemy musieli zadzwoń do ToList na moje zapytanie przed jakimiś podobnymi komandytami.
var newList = result.ToList().Where(e => e.ncharText == "Four");
Ten kod poprawnie zwraca teraz 0 rekordów, ponieważ uwzględnia białe spacje. Jednak wywołanie listy przed porównaniem może spowodować załadowanie dużej kolekcji do pamięci, która nie zostanie użyta.
Nie możesz po prostu zrobić 'e.ncharText.Trim() ==" Cztery "'? –