LINQ和REGEX.REPLACE

时间:2010-05-26 15:00:57

标签: regex linq str-replace

我正在尝试从数据库中提取地址记录,并按地址将它们组合在一起。 很简单吧?

我遇到的问题是LOCATION字段的格式是这样的

BUILDING:  some building description
ADDRESS: 555 1st Street

BUILDING:  some building description  ADDRESS:  555 1st STREET

地址,城市和州有多个匹配的实例。但是BUILDING:描述没有。所以我需要在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转换

1 个答案:

答案 0 :(得分:1)

您是否希望在SQL中执行所有查询?如果是这样,我认为你会感到失望 - 我不认为 LINQ to SQL支持正则表达式。

如果您愿意在进程中执行剩余的查询,则可以在第一个AsEnumerable()子句后使用Where

请注意,您可以通过执行另一个选择然后再调用ToList来更轻松地构建列表。