Почему условие where
не применяется в следующем коде? Когда я выполняю поиск, результаты не фильтруются. Когда я отлаживаю, searchString
имеет значение, и выполнение выполняется через предложение _data.Where
, но оно не возвращает результат фильтрации.LINQ to SQL - предложение WHERE отфильтровано
Что я здесь делаю неправильно?
IQueryable<UserViewModel> _data = (
from a in context.aspnet_Users
join b in context.aspnet_Membership on a.UserId equals b.UserId
where b.IsApproved == true
select new UserViewModel
{
UserId = a.UserId,
UserName = a.UserName,
FirstName = a.FirstName,
LastName = a.LastName,
EmailAddress = b.Email
})
.OrderBy(a => a.FirstName)
.ThenBy(b => b.LastName);
if (!String.IsNullOrEmpty(searchString))
{
_data = _data
.Where(x => x.FirstName.Contains(searchString))
.Where(y => y.UserName.Contains(searchString))
.Where(y => y.LastName.Contains(searchString))
.Where(y => y.EmailAddress.Contains(searchString));
}
Я предполагаю, что имеет значение только второй запрос. Этот запрос пытается найти записи, в которых имена FirstName * и * UserName * и * LastName * и * Email все начинаются с той же строки. Я думаю, что вам нужен запрос, который проверяет просто, если какой-либо из них начинается с строки поиска –
Как вы подтвердили этот результат? Что такое нефильтрованные данные, какова строка поиска и каковы отфильтрованные данные? Вы уверены, что используете строку поиска, которая существует в * все четыре * этих полей для любой записи? – David