LINQ to SQL语句之动态查询条件如何参数化

jakey188 2013-04-26 11:16:08
如下代码:

var db = new ExamdaDbContext(EnmDb.ExamSystem_Set);
IQueryable<ExpressionClassModel> cities = db.ExpresstionClass;
ParameterExpression param = Expression.Parameter(typeof(ExpressionClassModel), "c");
Expression left = Expression.Property(param, typeof(ExpressionClassModel).GetProperty("Name"));
Expression right = Expression.Constant("心情");
Expression filter = Expression.Equal(left, right);
var result = db.ExpresstionClass.Where(Expression.Lambda<Func<ExpressionClassModel, bool>>(filter, param));


采用的是拼接的方式 生成的sql语句为SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name], [Extent1].[Order] AS [Order]FROM [dbo].[Examda_Expression_Class] AS [Extent1] WHERE N'心情' = [Extent1].[Name]

怎样实现查询条件参数化呢 如@p_linq_0 = [Extent1].[Name]
...全文
639 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ansiboy 2013-06-02
  • 打赏
  • 举报
回复
引用 4 楼 kittying 的回复:
[quote=引用 3 楼 ansiboy 的回复:] 我想 ALinq Dynamic 正是你想要的 http://esql.codeplex.com
谢谢 这个有了解下 不过它是采用弱类型 后来发现linq会把有问题的参数修正 达到了我要的效果 [/quote] 动态查询,用强类型,太麻烦了,而且,不易于维护。这种情况下,弱类型用起方便,简洁,易懂易维护,如处远大于坏处。
  • 打赏
  • 举报
回复
比如说你写
var query = from x in MyDbContext()
    select x;
if(name !=null)
    query = from x in query
            where x.Name == name
            select x;
你跟踪一下关系数据库执行的sql语句是什么?
jakey188 2013-05-02
  • 打赏
  • 举报
回复
引用 3 楼 ansiboy 的回复:
我想 ALinq Dynamic 正是你想要的 http://esql.codeplex.com
谢谢 这个有了解下 不过它是采用弱类型 后来发现linq会把有问题的参数修正 达到了我要的效果
ansiboy 2013-04-27
  • 打赏
  • 举报
回复
我想 ALinq Dynamic 正是你想要的 http://esql.codeplex.com
不懂必须要问 2013-04-26
  • 打赏
  • 举报
回复
帮顶,我也想知道。
jakey188 2013-04-26
  • 打赏
  • 举报
回复
有人能回答下吗?

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧