Использование LINQ to SQL и связанной замены
-
03-07-2019 - |
Вопрос
Мне нужно заменить несколько строк другими в запросе.
from p in dx.Table
where p.Field.Replace("A", "a").Replace("B", "b").ToLower() = SomeVar
select p
Это обеспечивает хороший одиночный оператор SQL с соответствующими SQL-командами REPLACE().
Все хорошо :)
Мне нужно сделать это с помощью нескольких запросов вокруг приложения...Поэтому я ищу помощь в этом отношении;это будет работать, как указано выше, как одиночный запрос/команда SQL на сервере.
Судя по всему, я не могу использовать RegEx, поскольку нет SQL-эквалайзера.
Будучи новичком в LINQ, могу ли я это сделать?
например, можно ли получить его как «результат var» IQueryable и передать его функции, чтобы добавить необходимые .Replace() и передать обратно?Могу ли я получить быстрый пример того, как это сделать, если да?
РЕДАКТИРОВАТЬ:Кажется, это работает!похоже, это будет проблемой?
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);
}
Решение
Не было бы более эффективно отменить то, что вы пытаетесь сделать здесь, т.е. переформатировать строку, по которой вы проверяете, а не переформатировать данные в базе данных?
public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem)
{
var str = checkMediaItem.Replace("-", "?").Replace("&", "-").Replace("-", " "));
return DataSet.Where(p => p.Title == str);
}
Таким образом, теперь вы сравниваете поле в базе данных с заданным значением, а не сканируете таблицу, преобразуете данные в каждой строке и сравниваете их.