1

データベースから住所レコードを取り出して、住所ごとにグループ化しようとしています。シンプルですよね?

私が抱えている問題は、LOCATIONフィールドがそのようにフォーマットされていることです

BUILDING:  some building description
ADDRESS: 555 1st Street

また

BUILDING:  some building description  ADDRESS:  555 1st STREET

住所、都市、州が一致するインスタンスが複数あります。しかし、 BUILDING: の説明はそうではありません。したがって、ADDRESS の前および ADDRESS を含むものをすべて削除する必要があります。

これらは十分に単純に思えます。しかし、私はそれを機能させることができないようです。これが私の現在の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 への変換をサポートしていません

4

1 に答える 1

1

SQL 内ですべてのクエリを実行することを期待していましたか? もしそうなら、あなたはがっかりすると思います - LINQ to SQL は正規表現をサポートしていないと思います。

残りのクエリをインプロセスで実行しても構わない場合はAsEnumerable()、最初の句の後に使用できます。Where

別の Select を実行してから を呼び出すことで、リストをより簡単に作成できることに注意してくださいToList

于 2010-05-26T15:04:59.377 に答える