Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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_Sum - Fatal编程技术网

C# 使用LINQ求和属性

C# 使用LINQ求和属性,c#,linq,sum,C#,Linq,Sum,最后一行的语法不正确。是否可以这样做,否则我将不得不为此属性编写查询以计算总和 谢谢您考虑过扩展方法吗?您提供总和功能的地方。您考虑过扩展方法吗?这里提供了求和功能。顺便说一句,Count还支持谓词参数: 因此,您可以: DealsThisMonthOpen = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Open").Count(), DealsThisM

最后一行的语法不正确。是否可以这样做,否则我将不得不为此属性编写查询以计算总和


谢谢

您考虑过扩展方法吗?您提供总和功能的地方。

您考虑过扩展方法吗?这里提供了求和功能。

顺便说一句,Count还支持谓词参数:

因此,您可以:

DealsThisMonthOpen = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Open").Count(),
DealsThisMonthLost = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Lost").Count(),
DealsThisMonthWon = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Won").Count(),
DealsThisMonth = DealsThisMonthOpen + DealsThisMonthLost + DealsThisMonthWon;
顺便说一句,Count还支持谓词参数:

因此,您可以:

DealsThisMonthOpen = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Open").Count(),
DealsThisMonthLost = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Lost").Count(),
DealsThisMonthWon = deals.Where(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Won").Count(),
DealsThisMonth = DealsThisMonthOpen + DealsThisMonthLost + DealsThisMonthWon;

也许我遗漏了什么,但这肯定有用

Count方法返回int,因此DealsThisMonthOpen、DealsThisMonthLost和DealsThisMonthWon都是整数值。DealsThisMonth就是这三个整数值的总和

您还可以使它更干净一点,除非以后需要三个不同的值:

var a = deals.Count(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Open"),
var b = deals.Count(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Lost"),
var c = deals.Count(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Won"),

new foobar
{
    DealsThisMonthOpen = a,
    DealsThisMonthLost = b,
    DealsThisMonthWon = c,
    DealsThisMonth = a + b + c
};

也许我遗漏了什么,但这肯定有用

Count方法返回int,因此DealsThisMonthOpen、DealsThisMonthLost和DealsThisMonthWon都是整数值。DealsThisMonth就是这三个整数值的总和

您还可以使它更干净一点,除非以后需要三个不同的值:

var a = deals.Count(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Open"),
var b = deals.Count(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Lost"),
var c = deals.Count(deal => deal.DateCreated.Month == date.Month && deal.DealStatus == "Won"),

new foobar
{
    DealsThisMonthOpen = a,
    DealsThisMonthLost = b,
    DealsThisMonthWon = c,
    DealsThisMonth = a + b + c
};