“玩对象查询”;“模式”;在C#和表达式树中

“玩对象查询”;“模式”;在C#和表达式树中,c#,generics,objectquery,C#,Generics,Objectquery,我正在玩查询对象“模式”的基本实现(在引号中,因为这是解释器模式的实现),我正在考虑一个我不知道如何实现的增强 正如您所知,Criteria对象的外观如下所示: public class Criterion { ... string FieldName { get; set; } string Value { get; set; } .... } 我不喜欢的是,我必须给字段添加一个字符串,所以我在想是否可以创建某种通用的Criteria类,以便像这样使用它: var crite

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

正如您所知,Criteria对象的外观如下所示:

public class Criterion
{
  ...
  string FieldName { get; set; }
  string Value { get; set; }
  ....
}
我不喜欢的是,我必须给字段添加一个字符串,所以我在想是否可以创建某种通用的Criteria类,以便像这样使用它:

var criterion = new Criterion<Person>();
criterion.Field = c => c.FirstName;
criterion.Value = "John";
我相信一定有办法做到这一点,但我就是不能把我的头围绕着它


谢谢您的帮助。

您可以非常轻松地使用表达式来完成此操作。本文有一个例子-

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