【发布时间】:2014-04-09 12:31:03
【问题描述】:
我的问题与此处回答的问题略有不同 (Using reflection to retrieve a value from a list)
虽然此处批准的答案适用于选择,但我想对其进行扩展,以便我可以根据条件类型从查询中获取数据。目前,我改编的代码是这样的
public static async Task<T> GetDataFromTable<T>(string paramName, string condition="")
{
var k = Activator.CreateInstance(typeof(T));
var mn = typeof(T).GetProperty(paramName);
var tc = typeof(T).GetProperty(condition);
if (mn == null || !ftrackData.Online)
return (T)k;
var data = GetTableData<T>();
if (!string.IsNullOrEmpty(paramName))
{
var retval = data.Select(t => mn.GetValue(t, null));
return (T)retval;
}
else
return (T)data.FirstOrDefault(t => mn.GetValue(t, null) > tc.GetType(t, null)).ToList();
}
我希望最终返回中的“>”会根据传递到参数列表中的附加参数而改变。我知道我可以在 else 之后做一个简单的切换,但是有没有办法通过插入来改变条件?
【问题讨论】:
-
使用Expression Tree,您可以动态更改您的查询。
标签: c# c#-4.0 generics reflection