日期:2014-05-20  浏览次数:21069 次

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

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]
LINQ?to?SQL 动态查询条件 动态查询参数化

------解决方案--------------------
帮顶,我也想知道。
------解决方案--------------------
我想 ALinq Dynamic 正是你想要的
http://esql.codeplex.com
------解决方案--------------------
比如说你写
var query = from x in MyDbContext()
    select x;
if(name !=null)
    query = from x in query
            where x.Name == name
            select x;

你跟踪一下关系数据库执行的sql语句是什么?