目前在我们的项目中,我们正在使用Entity Framework和LINQ。我们想要创建一个搜索功能,客户端填充不同的过滤器,但他不会被迫。
要在LINQ中执行此“动态”查询,我们考虑使用Like运算符,搜索字段,或者“%”以获取用户未填写该字段的所有内容。
当我们发现它并不支持Like时,我们就开玩笑了。经过一些搜索,我们读了几个答案,其中使用了StartsWith,但它对我们来说没用。
唯一的解决方案是使用类似的东西:
ObjectQuery<Contact> contacts = db.Contacts;
if (pattern != "")
{
contacts = contacts.Where(“it.Name LIKE @pattern”);
contacts.Parameters.Add(new ObjectParameter(“pattern”, pattern);
}
但是,我们只想坚持使用linq。
快乐的编码!
答案 0 :(得分:2)
您是否尝试过使用包含?
contacts.Contains(pattern);
有关LINQ生成的简洁示例,请参阅此链接。
答案 1 :(得分:2)
使用它:
using System.Data.Objects.SqlClient;
... .Where(it => SqlFunctions.PatIndex("pat%", it.Name) > 0)