2012-03-26 30 views
0

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

正如你知道一个标准的对象看起来像以下:

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 + "'" 

我可以肯定得是这样做的方式,但我只是我的头不能包裹它。

感谢您的帮助。

+0

可能重复[获取方法名称和类型使用lambda表达式](http://stackoverflow.com/questions/273941/get-method-name-and-type-using-lambda-表达) – nawfal 2013-04-27 12:41:44

回答