巧妇难为无米之炊,你先让微软的SQL Server 支持这种查询再说。
当然,这是举个例子,你能让别家的数据库引擎支持这种查询也行。
我在sql server中试过,这种查询是支持的啊。
var res=ctx.table.where(c=>m.Id.Contains("1")||m.Id.Contains("2"))
lambda表达式这样应该就可以模糊查询了
写了个例子,动态拼接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();