运营商&&不能应用于double和bool类型的操作数

时间:2017-08-17 15:38:19

标签: c#

我遇到了sum运算符的问题。

var  Total_money = List.Sum(x => x.Cost && x.Type_of_room == Type);

所以我收到消息“运营商&&&&&&&&&&>”

3 个答案:

答案 0 :(得分:3)

您最有可能需要首先过滤,然后总结成本

var  Total_money = List.Where(x => x.Type_of_room == Type).Sum(x => x.Cost);

答案 1 :(得分:1)

您的表达式x.Cost返回一个双精度数,x.Type_of_room == Type返回一个bool。这两者都无法与&&进行比较。

因此,如果你想让那些有成本的东西,你可能会把成本的东西当作像x.Cost > 0这样的bool表达式。

如果您希望从x.Type_of_room == Type的成员总结成本,则应将表达式拆分为.Where(x => x.Type_of_room == Type)后跟.Sum(x => x.Cost),结果为:

var totalMoney = List
                  .Where(x => x.Type_of_room == Type)
                  .Sum(x => x.Cost);

答案 2 :(得分:0)

Sum()中的Func应该返回一个数字,但是你将它视为一个布尔表达式,就像它应该返回true或false一样。

解决此问题的一种方法是首先使用查询语法过滤查询,然后使用方法语法获取值的总和。

var  Total_money = (from x in List where x.Type_of_room == Type select x.Cost).Sum();