2010-05-26 6 views
1

J'essaie d'extraire des enregistrements d'adresses d'une base de données et de les regrouper par adresse. Assez simple non?LINQ et REGEX.REPLACE

Le problème I a est le champ de localisation est formaté en tant que telle

BUILDING: some building description 
ADDRESS: 555 1st Street 

ou

BUILDING: some building description ADDRESS: 555 1st STREET 

Il y a plusieurs cas où l'adresse, la ville et correspondent État. Mais le BUILDING: la description ne le fait pas. Donc, j'ai besoin de supprimer quelque chose avant et y compris l'adresse:

Cela semble assez simple. Mais je n'arrive pas à le faire fonctionner. Voici mon LINQ actuel

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 

Lorsque je courais obtiens l'erreur suivante:

Method 'System.String Replace(System.String, System.String, System.String)' has no supported translation to SQL

Répondre

1

vous attendiez à effectuer toutes les requêtes dans SQL? Si oui, je pense que vous serez déçu - je ne sais pas pense LINQ to SQL prend en charge les expressions régulières.

Vous pouvez utiliser AsEnumerable() après la première clause Where si vous êtes satisfait de faire le reste de la requête en cours.

Notez que vous pouvez créer la liste plus facilement en effectuant une autre sélection, puis en appelant ToList.

+0

J'ai été en mesure d'utiliser votre suggestion pour faire une liste générique des résultats (avant la regex et utiliser la regex tout en ajoutant les éléments à la liste). Puis j'ai pris cette liste, créé une nouvelle instance As IEnumerable et regroupé les résultats ensemble pour obtenir le résultat final. – Kardsen