我遇到了sum运算符的问题。
var Total_money = List.Sum(x => x.Cost && x.Type_of_room == Type);
所以我收到消息“运营商&&&&&&&&&&>”
答案 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();