我想要得到一列的平均值。我可以让它像这样工作:
IEnumerable results = defaultView.Select(args);
Decimal amount = results.Cast<Fees>().Average(x => x.Fee);其中results是System.Collections.Generic.List`1对象的集合。但是,结果并不总是相同的对象,因为可能会返回其他内容。
它总是在x个对象的结构中,每个对象有5-10个值。
我希望有一种通用的方法来遍历数据,比如结果,但是如果不使用上面的强类型示例,就找不到访问这些数据的方法。有什么想法吗?
发布于 2012-11-26 10:25:33
最好的办法是为不同类之间共享的属性创建接口:
public interface IHasFee
{
decimal Fee {get;}
}然后,您可以将此接口应用于具有Fee属性的所有类:
public class Fees : IHasFee
{
public decimal Fee {get;set;}
}
public class Charge : IHasFee
{
public decimal Fee {get;set;}
}发布于 2012-11-26 10:23:21
如果需要在可能包含不同类型对象的集合中遍历特定类型的对象(例如Fees),请尝试使用:Enumerable.OfType Method 。
IEnumerable results = defaultView.Select(args);
Decimal amount = results.OfType<Fees>().Average(x => x.Fee);来自MSDN:
Enumerable.OfType Method
根据指定的类型筛选IEnumerable的元素。
OfType(IEnumerable)方法只返回源代码中可以转换为TResult类型的那些元素。如果某个元素不能强制转换为TResult类型,则可以使用Cast(IEnumerable).接收异常
https://stackoverflow.com/questions/13557818
复制相似问题