2017-08-17 106 views
1

我對sum運算符有問題。運算符&&不能應用於double和bool類型的操作數

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

所以我得到的消息「操作員& &不能適用於double類型的操作數和布爾」

+5

你讀過文檔? – Anton

+3

您預期'x.Cost && x.Type_of_room == Type'意味着什麼? – David

+3

你對錯誤信息有什麼不瞭解?問題是什麼非常明確。 – Servy

回答

3

你最有可能需要過濾第一再總結成本

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

現在工作。所以原因是首先用條件列表,然後在這個列表中總結信息。這是對的嗎? 那麼,爲什麼count可以用在很多條件裏面,並且不需要先過濾列表,但仍然有效?例如:var Room = List.Count(x => x.Type_of_room == Type && x.Date_rent.Date = '15「) –

+0

Sum正在對一個聚合表達式進行計數,同時將其計算爲一個謂詞表達式。 – Nkosi

1

你表達式x.Cost返回一個double,x.Type_of_room == Type返回一個bool。這兩者都不能與&&進行比較。

因此,例如,如果您想讓費用符合成本要求,那麼您可以使成本爲bool表達式,如x.Cost > 0

如果你想擁有從那些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); 
0

中和的Func鍵()應該返回一個數字,但是你將它視爲一個布爾表達式,就好像它應該返回true或false一樣。

解決此問題的一種方法是首先用查詢語法過濾查詢,然後使用方法語法獲取這些值的總和。

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