我不能在我的项目中使用 LinqToSql,所以我正在实现类似的东西。我有一个需要比较值的对象:
obj.Where(w=> w.Name == "NAME");
方法看起来像这样:
Where(Expression<Func<T, bool>> expression)
我已经知道如何获取属性名称,但我需要从表达式中获取以下信息:
- 表达式中使用的运算符 (==, >=, <=)
- 我要与原始值进行比较的值
最后我可以构建一个 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/