Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 长型LINQ求和法_C#_Linq - Fatal编程技术网

C# 长型LINQ求和法

C# 长型LINQ求和法,c#,linq,C#,Linq,如何获得长型中某些项目的总和。。。这是mycode: using (gEn myEntities = new gEn) { var load = (from items in myEntities.Orders select items.PayO).DefaultIfEmpty(0).Sum(); } 但总的来说我。。。我还想知道DefaultIfEmpty方法在用于长类型时是否与Sum方法有冲突。。。提前感谢…返回select中使用的任何类型的表达式,只要它是定义的重载之一。如果要返回一个长

如何获得长型中某些项目的总和。。。这是mycode:

using (gEn myEntities = new gEn)
{
var load = (from items in myEntities.Orders
select items.PayO).DefaultIfEmpty(0).Sum();
}
但总的来说我。。。我还想知道DefaultIfEmpty方法在用于长类型时是否与Sum方法有冲突。。。提前感谢…

返回select中使用的任何类型的表达式,只要它是定义的重载之一。如果要返回一个长的,然后强制转换items.PasO:

我还想知道DefaultIfEmpty方法在用于长类型时是否与Sum方法有冲突

否,DefaultIfEmpty可用于任何类型,包括long。只要该类型有一个Sum重载,它就可以正常工作。

如果Sum返回int,那是因为这是集合的数据类型。所有这些LINQ到对象方法都是泛型的。而且,DefaultIfEmpty不会有任何副作用。如果集合中没有项,它只会给你0,那么Sum将处理结果,结果将是一个IEnumerable,其中一个项的值为0


我只是假设你在这里使用EF。如果是这种情况,您需要在检索数据后执行强制转换,或者在C端更改您的模型,使其具有较长的时间。您可能还需要检查该表的数据类型,因为如果您从数据源生成了C模型,并且它使用的是int32,那么这可能也是您的表的数据类型。

非常感谢您。。。它工作得很好。。。我将把这个标记为答案…:我想知道DefaultIfEmpty0中的0是否被解释为int,结果类型是否发生变化?我的数据库使用int32。。。但它必须是int64的总和,否则它会给我错误的结果。。。既然我们可以投,你也提到了,没问题。。。谢谢你的回答:
var load = (from items in myEntities.Orders
            select (long)(items.PayO)
           )
           .DefaultIfEmpty(0).Sum();