对于某个列名,我想计算 SUM。我刚刚发现如何使用反射,但不知道我是否以正确的方式做这件事..
string columnName = "days";
ObjectQuery<TableX> objectSet = context.CreateObjectSet<TableX>();
Func<TDomainEntity, object> fieldGetter;
var type = typeof(TDomainEntity);
var prop = type.GetProperty(columnName);
fieldGetter = e => prop.GetValue(e,null);
//this wouldn't work because the fieldGetter should be Func<TDomainEntity, decimal> and not object
var total = objectSet.Sum(fieldGetter);
我无法让它工作,因为 fieldgetter 应该是 decimal 类型,但 type.GetProperty 将失败并且强制转换它不起作用。那么我错过了什么还是有其他方法?我可以为列名创建一个巨大的 switch 语句,但这并不好 :)