LINQ中长和类的求和方法
如何获得长类型的一些项目的总和…这是mycode:
using (gEn myEntities = new gEn) { var load = (from items in myEntities.Orders select items.PayO).DefaultIfEmpty(0).Sum(); }
但是Sum给了我int …我也想知道当使用long类型时,DefaultIfEmpty方法是否与Sum方法有任何冲突…提前感谢…
Sum
返回select
返回中使用的表达式的任何类型(假设它是已定义的重载之一)。 如果你想返回一个long然后施放items.PasO
:
var load = (from items in myEntities.Orders select (long)(items.PayO)).DefaultIfEmpty(0).Sum();
我还想知道当使用long类型时,DefaultIfEmpty方法是否与Sum方法有任何冲突
不, DefaultIfEmpty
适用于任何类型,包括long
。 只要该类型的Sum
重载就可以正常工作。
如果Sum()
返回一个int
那是因为那是集合的数据类型。 所有这些LINQ to Object方法都是通用的。 不, DefaultIfEmpty
没有副作用。 如果集合中没有项目,那么它将给你0,然后Sum
将使用一个IEnumberable
的结果,其中一个项目的值为0。
我假设你在这里使用EF。 如果是这种情况,您需要在检索数据后进行转换,或者在C#端更改模型以使其long
。 您可能还想检查该表的数据类型是什么,因为如果您从数据源生成C#模型并且它使用的是int32,那么这可能就是您的表所具有的。