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);
}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top