如何实现sql";%";在EF中
本文关键字:quot EF sql 何实现 实现 | 更新日期: 2023-09-27 18:28:59
我想做的是:
var TheQuery = db.Conventions.Where(p => p.Categories.Contains("%"));
但数据库中没有返回任何内容!
根据你对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(或任何其他需要客户端评估的方法)之后才会执行。只要您坚持对Query对象进行纯LINQ调用,就可以继续对其使用where子句,直到您满意为止。
SQL"%"?你的意思是和LIKE一起使用吗?如果是这样,只需使用.Contains("Products")
带回类别,如:
carProducts
houseProducts2
即contains将返回Categories属性/字段"包含"字符串的结果,而不管字符串的任一侧是什么。
或者您的意思是希望类别包含字符"%"?(您现在已经成功地做到了)