2017-08-17 15 views
1

sum演算子に問題があります。あなたが最も可能性が高い演算子&&はdouble型とbool型のオペランドには適用できません

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

docsを読んだことがありますか? – Anton

+3

'' x.Cost && x.Type_of_room == Type'はどういう意味ですか? – David

+3

エラーメッセージについて理解していないのですか?問題が何であるかは非常に明白です。 – Servy

答えて

3

x.Costはdoubleを返し、x.Type_of_room == Typeはboolを返します。これらは両方とも&&と比較することはできません。

たとえば、費用がかかるものを持っている場合は、x.Cost > 0のようにコストをbool式にすることができます。

あなたはそのx.Type_of_room == Typeものと総括原価を持っているしたい場合は、その結果.Sum(x => x.Cost)続い.Where(x => x.Type_of_room == Type)に式を分割する必要があります。

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

それは今の仕事です。その理由は、最初に条件付きリストを作成し、次にこのリスト内の情報を合計することです。それが正しいか? なぜ数え込みが多くの条件で使用され、最初にリストをフィルタリングする必要はないのですか?例:var Room = List.Count(x => x.Type_of_room == Type && x.Date_rent.Date = '15 ') –

+0

合計は、述語式を取る際に集計式を取っています。 – Nkosi

1

あなたの費用を合計し、最初のフィルタ処理する必要がある

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

だから私はメッセージ「演算子& &はタイプのオペランドに適用することができない、ダブル、ブール」しまったに

0

合計内のFuncは()になっています数値を返しますが、真または偽を返す場所のようにブール式として扱います。

これを克服する1つの方法は、クエリ構文で最初にクエリをフィルタ処理し、次にメソッド構文を使用して値の合計を取得することです。

var Total_money = (from x in List where x.Type_of_room == Type select x.Cost).Sum(); 
関連する問題