2012-07-31 17 views
5

Nie jestem pewien, czy jest to najlepszy sposób na osiągnięcie tego w Linq.Linq: Sprawdzanie, czy kolumna łańcucha ma wartość (tj. Nie jest pusta ani pusta)

Próbuję wybrać rekordów kontaktów w CRM 2011, gdzie adres e-mail EMail1 zawiera wartość. Poniższe WHERE próbowałem zarówno spowodowane wyjątki:

Where c.EMailAddress1 > "" 

Where Not String.IsNullOrEmpty(c.EMailAddress1) 

Więc skończyło się próbuje to, co wydaje się działać ok:

Where Not c.EMailAddress1.Equals(String.Empty) _ 
And Not c.EMailAddress1.Equals(Nothing) 

Ale ja po prostu nie jestem pewien, czy jest to najbardziej wydajny metoda ... nie wydaje się bardzo elegancka. Czy istnieje lepszy sposób sprawdzenia, czy kolumna łańcucha ma wartość?

+1

podczas korzystania string.IsNullOrEmpty, co jest wyjątkiem, że otrzymujesz? –

+0

jaki typ danych to EMailAddress1? –

+0

@ForteL. wyjątkiem jest "Nieprawidłowy", w którym występuje "warunek" Członek encji wywołuje niepoprawną właściwość lub metodę. ". Typ danych to String. –

Odpowiedz

4

Jak powiedział here LINQ do CRM jest bardzo ograniczona. Dlatego nie można używać String.IsNullOrEmpty.

jednak należy starać się to zrobić:

Where c.EMailAddress1 IsNot Nothing 

Gdy pole jest puste, jest on ustawiony na NULL w bazie danych (nie pusta). Ta linia powinna wystarczyć dla twojej sprawy.

Pozdrawiam,

Kevin

+0

Dzięki za link. Również chcę sprawdzić "" (pusty ciąg, nie puste), więc Nic samo w sobie nie wystarczy. Wydaje się, że to musi być zrobione przy użyciu 2 warunków, wystarczająco fair. –

+1

W rzeczywistości, jeśli użytkownik wpuściłby puste pole, będzie to NULL. Nigdy nie znajdziesz żadnego wyniku, jeśli zajmiesz się pustym łańcuchem przy użyciu linq. A więc "IsNot Nothing" powinno wystarczyć. –

+0

Czy to tylko zachowanie Linq? Wiele projektów baz danych unika kolumn z opróżnianiem. Nie jestem pewien co do CRM 2011 w tym przypadku. Ale zakładając, że kolumna w db jest VarChar NOT NULL, czy linq następnie traktować puste i "" (pusty) inaczej? –

2

prostu zrobić:

Where c.EmailAddress <> "" 
+0

Podnosi to również wyjątek: "Nieprawidłowy" w przypadku "warunku." Członek encji wywołuje niepoprawną właściwość lub metodę. " –

+0

Gdzie (funkcje) s.Adres e-mailowy <> "") = działa! Puste i puste ciągi nie są wybierane. –

Powiązane problemy