À l'aide de “Correspondance” dans une déclaration de Linq

J'ai une table qui contient deux enregistrements (il y aura beaucoup à l'exécution). Le deviceId de la dossiers sont, “DEVICE1” et “USB2”. Je veux utiliser une expression régulière pour extraire des enregistrements.

Le code ci-dessous compile mais ne parvient pas à renvoyer un résultat. Quand j'ai passez le curseur sur le “les appareils.ToList()” déclaration j'obtiens l'erreur suivante:

base {System.SystemException} = {"LINQ to Entities does not recognize the method 'System.Text.RegularExpressions.MatchCollection Matches(System.String)' method, and this method cannot be translated into a store expression."}”

Quelqu'un peut me montrer comment je peux modifier ma requête, de sorte que ce serait de retour des dossiers en fonction de l'expression?

filterText = @"DEVICE.";
Regex searchTerm = new Regex(filterText);

using (var ctx = new MyEntities())
{
 var devices = from d in ctx.Devices
                let matches = searchTerm.Matches(d.DeviceId)
                where matches.Count > 0
                select ((Device)d);
return devices.ToList();
}
Essayez d.DeviceId.StartsWith(searchTerm) au lieu de searchTerm.Les matchs.

OriginalL'auteur Retrocoder | 2010-08-16