用于比较 LINQtoSQL 等值的 C# 表达式

标签 c# linq-to-sql lambda

我不能在我的项目中使用 LinqToSql,所以我正在实现类似的东西。我有一个需要比较值的对象:

obj.Where(w=> w.Name == "NAME"); 

方法看起来像这样:

Where(Expression<Func<T, bool>> expression)

我已经知道如何获取属性名称,但我需要从表达式中获取以下信息:

  1. 表达式中使用的运算符 (==, >=, <=)
  2. 我要与原始值进行比较的值

最后我可以构建一个 SQL 选择查询。

示例

obj.Where(w=> w.Name == "NAME"); 

返回

WHERE Name = 'NAME' 

感谢您的帮助, B、

最佳答案

您可以遍历表达式树,例如使用 visitor就像在this example .但在开发自定义 SQL 查询生成器之前,我肯定会考虑使用现有的查询生成器——这项任务真的很复杂。 Entity Framework ,例如。

关于用于比较 LINQtoSQL 等值的 C# 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28784293/

相关文章:

java - 使用 IntStream 创建数组的随机子集的快速方法

c# - GC 和 IDispose 在 C# 中如何工作?

c# - 如何以编程方式调用设置魅力?

c# - 谁能解释一下以下两个查询的区别?

c# - LINQ to SQL 用不同的行对多列进行分组

Java lambda 表达式——映射然后修改列表?

c# - 格式化 TimeSpan 对象始终显示 00 毫秒

c# - 是否可以反汇编程序来检索数据库凭证或更改 SQL 查询?

c# - 在 LINQ 表达式中创建选定项时获取序号位置

ruby - `send` 替代 Ruby 中的 lambda