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()
还支持predicate
论点: http://msdn.microsoft.com/en-us/library/bb535181.aspx
所以你可以:
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 dealsThisMonth = deals
.Count(d => d.DateCreated.Month == date.Month
&& (new string[] { "Open", "Lost", "Won" }).Contains(d.DealStatus));