Как реализовать sql "%" в EF? - PullRequest
1 голос
/ 23 марта 2012

Что я хочу сделать, это:

var TheQuery = db.Conventions.Where(p => p.Categories.Contains("%"));

, но из базы данных ничего не возвращается!

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Исходя из вашего комментария к DaveShaw, я думаю, что вы должны это сделать:

IQueryable<Convention> query = db.Conventions;
if (!string.IsNullOrWhiteSpace(inputCategory))
{
    query = query.Where(p => p.Categories.Contains(inputCategory));
}
if (!string.InNullOrWhiteSpace(inputName))
{
    query = query.Where(p=> p.Name == inputName);
}

и т. Д.

Теперь, если вы хотите убедиться, что ваша Конвенция имеет хотя бы одну категориювместо этого вы можете использовать .Any ()

if (string.IsNullOrWhiteSpace(inputCategory))
{
    query = query.Where(p => p.Categories.Any());
}

или если у него должна быть какая-либо категория с определенным именем

if (!string.IsNullOrWhiteSpace(inputCategory))
{
    query = query.Where(p => p.Categories.Any(c => c.Name.Contains(inputCategory));
}

Фактический запрос не будет выполнен, пока вы не вызовете ToArray,ToList или ToEnumerable на нем (или любой другой метод, который требует оценки на стороне клиента).Пока вы придерживаетесь чистых вызовов LINQ на объекте Query, вы можете продолжать придерживаться его положений, пока не будете удовлетворены.

0 голосов
/ 23 марта 2012

SQL "%"? Вы имеете в виду, когда используете с как? Если это так, просто используйте .Contains("Products"), чтобы вернуть категории, такие как:

carProducts
houseProducts2

т.е. Содержимое будет возвращать результаты, когда свойство / поле «Категории» «содержит» строку, независимо от того, с какой стороны она находится.

Или вы хотели, чтобы категории содержали символ "%"? (Вы успешно делаете это сейчас)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...