Utiliser LINQ to SQL et remplacer en chaîne
-
03-07-2019 - |
Question
J'ai besoin de remplacer plusieurs chaînes par d'autres dans une requête
from p in dx.Table
where p.Field.Replace("A", "a").Replace("B", "b").ToLower() = SomeVar
select p
Qui fournit une belle instruction SQL avec les commandes SQL REPLACE () appropriées.
Tout va bien:)
Je dois faire cela dans quelques requêtes sur l'application ... Je cherche donc de l'aide à cet égard; cela fonctionnera comme ci-dessus comme une simple touche / commande SQL sur le serveur
Il me semble qu'en regardant autour de moi, je ne peux pas utiliser RegEx car il n'y a pas d'équivalent SQL
Être un débutant LINQ est-il un bon moyen pour moi de le faire?
Par exemple, est-il possible de l’obtenir sous la forme d’un "résultat var" IQueryable " dire et passer cela à une fonction pour ajouter les fichiers nécessaires .Replace () et les renvoyer? Puis-je obtenir un exemple rapide de comment, si oui?
EDIT: Cela semble fonctionner! Cela ressemble-t-il à un problème?
var data = from p in dx.Videos select p;
data = AddReplacements(data, checkMediaItem);
theitem = data.FirstOrDefault();
...
public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem)
{
return DataSet.Where(p =>
p.Title.Replace(" ", "-").Replace("&", "-").Replace("?", "-") == checkMediaItem);
}
La solution
Ne serait-il pas plus efficace d'inverser ce que vous essayez de faire, à savoir reformater la chaîne que vous vérifiez plutôt que de reformater les données de la base de données?
public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem)
{
var str = checkMediaItem.Replace("-", "?").Replace("&", "-").Replace("-", " "));
return DataSet.Where(p => p.Title == str);
}
Ainsi, vous comparez maintenant le champ de la base de données avec une valeur définie, plutôt que de scanner la table et de transformer les données de chaque ligne et de les comparer.