【问题标题】:Dynamic linq to sql动态 linq 到 sql
【发布时间】:2017-12-31 03:01:48
【问题描述】:

使用 System.Linq.Dynamic
例如:

student.Where("studentno=@0","1001170101001")

SQL 看起来像:

exec sp_executesql N'select [Extent1].studentno,[Extent1].name.... from student
where [Extent1].[Name] =N''1001170101001''

但我想要 SQL 是:

exec sp_executesql N'select [Extent1].studentno,[Extent1].name.... from student
where [Extent1].[Name] =@DynamicFilterParam_000001',',N'@DynamicFilterParam_000001 nvarchar(50),
@DynamicFilterParam_000001='1001170101001'

eg2:

string studentno="1001170101001";
student.Where(q=>q.studentno == studentno);

这个 SQL 是:

exec sp_executesql N'select [Extent1].studentno,[Extent1].name.... from student
where [Extent1].[Name] =@DynamicFilterParam_000001',',N'@DynamicFilterParam_000001 nvarchar(50),
@DynamicFilterParam_000001='1001170101001'

怎么做?

【问题讨论】:

  • 欢迎来到 SO。请标记您正在使用的数据库,并提出更具体的问题。到目前为止,您的问题还不清楚。
  • 你能用更具体的代码解释你的期望吗?
  • 如果您尝试student.AsQueryable().Where("studentno=@0","1001170101001") 会怎样?
  • 你为什么使用动态?常规 LINQ 查询将使用参数,具体取决于您使用的 LINQ 提供程序。也许您的数据库不使用参数?
  • 学生是 dbset

标签: sql sql-server entity-framework linq dynamic


【解决方案1】:

已经解决了! 动态.cs 1.在ExpressionParser Constructor中创建动态类tempclass 来自值的属性 名称如“@”+ i.ToString(System.Globalization.CultureInfo.InvariantCulture) 2.创建实例对象4 tempclass并设置属性值 3.更改表达式 ParseIdentifier() expr = Expression.Constant(value); 像这样 expr = Expression.Property(Expression.Constant(tempclass), token.text);

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多