Utilizzo di LINQ to SQL e Sostituisci concatenato
-
03-07-2019 - |
Domanda
Ho bisogno di sostituire più stringhe con altre in una query
from p in dx.Table
where p.Field.Replace("A", "a").Replace("B", "b").ToLower() = SomeVar
select p
Che fornisce una bella singola istruzione SQL con i comandi sql REPLACE () pertinenti.
Tutto bene :)
Devo farlo in alcune domande sull'applicazione ... Quindi sto cercando un aiuto in questo senso; che funzionerà come sopra come singolo hit / comando SQL sul server
Sembra che guardandomi intorno non riesco a usare RegEx in quanto non esiste SQL eq
Essere un principiante di LINQ è un modo carino per farlo?
es. è possibile ottenerlo come risultato IQueryable "var result" dire e passarlo a una funzione per aggiungere i necessari .Replace () e tornare indietro? Posso avere un rapido esempio di come in tal caso?
EDIT: sembra funzionare! sembra che sarebbe un problema?
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);
}
Soluzione
Non sarebbe più efficace invertire ciò che si sta tentando di fare qui, ovvero riformattare la stringa con cui si sta verificando anziché riformattare i dati nel database?
public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem)
{
var str = checkMediaItem.Replace("-", "?").Replace("&", "-").Replace("-", " "));
return DataSet.Where(p => p.Title == str);
}
Quindi ora stai confrontando il campo nel database con un valore impostato, piuttosto che scansionare la tabella e trasformare i dati in ogni riga e confrontarli.