我想寫入過濾控件,它們使用對象類型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