LINQ и REGEX.REPLACE - PullRequest
       11

LINQ и REGEX.REPLACE

1 голос
/ 26 мая 2010

Я пытаюсь извлечь адресные записи из базы данных и сгруппировать их по адресу. Достаточно просто, верно?

У меня проблема в том, что поле LOCATION отформатировано как таковое

BUILDING:  some building description
ADDRESS: 555 1st Street

или

BUILDING:  some building description  ADDRESS:  555 1st STREET

Существует несколько случаев, когда адрес, город и штат совпадают. Но ЗДАНИЕ: описания нет. Поэтому мне нужно удалить что-либо до и в том числе АДРЕС:

Это кажется достаточно простым. Но я не могу заставить его работать. Вот мой текущий LINQ

Dim addressesP1 = _
        (From R In tickets _
         Where R.PRIORITY = 1 _
         Group R By R.Z_LOC_CITY, R.Z_LOC_STATE, _
         ZLOC = Regex.Replace(R.Z_LOCATION, "/.+address:/is", "") _
         Into Group _
         Where Group.Count >= P1Count _
         Select ZLOC, Z_LOC_CITY, Z_LOC_STATE, thecount = Group.Count)

For Each c In addressesP1
        list.Add( _
                New TicketAddress With _
                     {.z_location = c.ZLOC, _
                      .z_loc_city = c.Z_LOC_CITY, _
                      .z_loc_state = c.Z_LOC_STATE, _
                      .thecount = c.thecount() _
                      })
    Next


    Return list

При запуске я получаю следующую ошибку:

Метод 'System.String Replace (System.String, System.String, System.String)' не поддерживает перевод в SQL

1 Ответ

1 голос
/ 26 мая 2010

Вы ожидали выполнить все запросы в SQL? Если так, я думаю, вы будете разочарованы - я не думаю, LINQ to SQL поддерживает регулярные выражения.

Вы можете использовать AsEnumerable() после первого предложения Where, если вы готовы выполнить остальную часть запроса в процессе.

Обратите внимание, что вы могли бы создать список проще, выполнив еще один выбор, а затем вызвав ToList.

...