Wpis z mikrobloga

#csharp #naukaprogramowania jak zrobić zapytanie linq ktore usunie mi ze stringa wszystkie znaki ktore nie sa cyframi np

var query = ( for x in tabelazbazydanych
where x.jakas
kolumna == 0
select x)

chcę żeby wyciełko z jakas_kolumna wszystkie znaki po za cyframi
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Nie wiedziałem, że zapytanie wykonywane jest przez linqToSql / EF, które nie tłumaczy wielu metod (w tym regexów) do SQL-a. W tym przypadku, aby wykonało się to po stronie serwera, musisz ratować się czymś w stylu:

where jakaskolumna.Replace("-", "").Replace(" ", "") == 0

czyli spaghetti code (lepiej to rozwiązać w inny sposób). Więcej tutaj: https://msdn.microsoft.com/en-us/library/bb882672%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396
  • Odpowiedz
@LeniwiecPracoholik: Nie zgadzam się, że zamiana na regex uczyni kod bardziej czytelnym. Powinnyśmy wyodrębnić osobną metodę. Poza tym w przypadku linq to sql, obie implementacje i tak nie zostaną zamienione na poprawny SQL, co wyjaśniłem wyżej.
  • Odpowiedz
@andrzej-kopara: Gdzie wychwalam regex? I przede wszystkim, gdzie wyśmiałem kogokolwiek z powodu nieznajomości wyrażeń regularnych? Spytałem tylko o to.
I owszem nie jestem mistrzem regex, bo z niego za często nie korzystam. Dlatego zwykle korzystam z konstrukcji {1,} zamiast * i +, które notorycznie mylę, co widać w mojej odpowiedzi. ¯\_(ツ)_/¯
A co do krytyki.
LinQ służy do operacji na kolekcjach. Jak ktoś zobaczyłby kod używający linq do wycinania z
  • Odpowiedz