У меня есть таблица, в которой мне нужно выполнить поиск по тексту в поле без учета регистра.
Если я запускаю этот запрос в LinqPad непосредственно в моей базе данных, он работает как положено
Table.Where(tbl => tbl.Title.Contains("StringWithAnyCase"))
// also, adding in the same constraints I'm using in my repository works in LinqPad
// Table.Where(tbl => tbl.Title.Contains("StringWithAnyCase") && tbl.IsActive == true)
В моем приложении у меня есть хранилище, которое предоставляет объекты IQueryable, которые выполняют некоторую начальную фильтрацию, и это выглядит так
* +1007 *
В контроллере (это приложение MVC) я использую подобный код, пытаясь имитировать запрос LinqPad:
var rpo = new RepositoryOfTable();
var tables = rpo.GetAllTables();
// for some reason, this does a CASE SENSITIVE search which is NOT what I want.
tables = tables.Where(tbl => tbl.Title.Contains("StringWithAnyCase");
return View(tables);
Столбец определен как nvarchar(50)
в SQL Server 2008.
** Обновление **
У меня был частичный класс (для одной из моих сущностей из Linq-To-SQL) со свойством IQueryable, но каким-то образом возвращение IQueryable из EntitySet заставило мои последующие запросы работать в IEnumerable (читай Linq-To-Objects ) путь, даже если они действовали на IQueryable типах.