首页新闻找找看学习计划

EF模糊查询

0
悬赏园豆:5 [待解决问题]

请问如何用EF实现下面这句SQL:

select * from tableA where tableA.B like '%CD%EF%'

当然,这是举个例子,条件是会变的,可能再变成'%CD%EF%GH%JK%'等等。

星尘之泪的主页 星尘之泪 | 初学一级 | 园豆:49
提问于:2018-05-25 15:31
< >
分享
所有回答(3)
0

巧妇难为无米之炊,你先让微软的SQL Server 支持这种查询再说。

当然,这是举个例子,你能让别家的数据库引擎支持这种查询也行。

爱编程的大叔 | 园豆:29564 (高人七级) | 2018-05-25 16:40

我在sql server中试过,这种查询是支持的啊。

支持(0) 反对(0) 星尘之泪 | 园豆:49 (初学一级) | 2018-05-25 16:52
0
var res=ctx.table.where(c=>m.Id.Contains("1")||m.Id.Contains("2"))

lambda表达式这样应该就可以模糊查询了

华临天下 | 园豆:1165 (小虾三级) | 2018-05-25 16:58
1

写了个例子,动态拼接EF查询条件的方式,不知道是否满足你的需求,没测试,你看下对你有用没有吧:

 

 1   ParameterExpression m_Parameter = Expression.Parameter(typeof(tableA), "x");
 2             List<Expression> m_lstExpression = new List<Expression>();
 3             string[] keywords = {"CC","DD","EE" };//先把不确定个数的查询条件创建一个数据
 4             for (int i = 0; i < keywords.Length; i++)
 5             {
 6                 MemberExpression keyfiled = Expression.PropertyOrField(m_Parameter, "B");//B是字段名
 7                 Expression expName = Expression.Call(keyfiled, typeof(string).GetMethod("Contains"), Expression.Constant(keywords[i]));
 8                 m_lstExpression.Add(expName);
 9             }
10             Expression whereExpr = null;
11             foreach (var expr in m_lstExpression)
12             {
13                 if (whereExpr == null)
14                     whereExpr = expr;
15                 else
16                     whereExpr = Expression.And(whereExpr, expr);
17             }
18             Expression<Func<tableA, bool>> exprelamada = null;
19             if (whereExpr != null)
20             {
21                 exprelamada = Expression.Lambda<Func<tableA, bool>>(whereExpr, m_Parameter);
22             }
23             Apps.Models.HX_NEWEntities jpxydbdb = new Apps.Models.HX_NEWEntities();//这块是你的EF上下文对象
24             var query = jpxydbdb.Set<tableA>().Where(exprelamada);
25 
26             List<tableA> result = query.ToList();
晨之风 | 园豆:385 (菜鸟二级) | 2018-05-25 17:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册