Вопрос

Мне нужно заменить несколько строк другими в запросе.

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);
}

Таким образом, теперь вы сравниваете поле в базе данных с заданным значением, а не сканируете таблицу, преобразуете данные в каждой строке и сравниваете их.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top