0

我正在玩查询对象“模式”的基本实现(在引号中,因为这是解释器模式的实现),并且我正在考虑一种我不知道如何实现的增强功能。

如您所知,Criterion 对象如下所示:

public class Criterion
{
  ...
  string FieldName { get; set; }
  string Value { get; set; }
  ....
}

我不喜欢的是我必须在字段中添加一个字符串,所以我在想是否可以创建某种通用 Criterion 类,这样我就可以像这样使用它:

var criterion = new Criterion<Person>();
criterion.Field = c => c.FirstName;
criterion.Value = "John";

或类似的规定。

当然,也有需要将条件转换为 SQL 的部分,因此我可以执行以下操作:

string query = "SELECT * FROM Person WHERE " + criteria.Field.ToString() + " = '" + criteria.Value + "'"

我确信必须有一种方法可以做到这一点,但我就是无法理解它。

谢谢你的帮助。

4

1 回答 1

0

您可以使用 Expressions 轻松完成此操作。这篇文章有一个例子 -使用 lambda 表达式获取属性名称和类型

于 2012-03-26T21:40:36.153 回答