我想写入过滤控件,它们使用对象类型T
和属性名称并返回Expression<Func<T, bool>>
,它检查传递属性的值。我不想使用反射,因为我担心这样的表达式不能被EF使用。我不能使用委托,因为C#没有属性的委托。我能做什么?也许我应该使用不同的方法来编写这些控件?生成用于过滤任意属性的表达式<
下面是使用反射我的第一种方法:
public string FilteringField { get; set; }
public Expression<Func<T, bool>> GetFilterExpression()
{
if (cmbValue.SelectedIndex == 1)
return (o => (bool)typeof(T).GetProperty(FilteringField).GetValue(o, null));
if (cmbValue.SelectedIndex == 2)
return (o => !(bool)typeof(T).GetProperty(FilteringField).GetValue(o, null));
return null;
}
Can你请澄清你的问题?你能给个例子吗? – 2009-09-11 12:45:48