以下のスローランタイムエラーが発生しました。それがうまくコンパイルが:ToList()を使用せずにLINQ Sum()関数が失敗する
float? totalSum = (from t in _context.Orders
join c in _context.Customers.Where(c => c.region=="NW")
on t.CustomerId equals c.CustomerId
select t.price).Sum();
エラー:
Unable to cast object of type 'System.Double' to type 'System.Nullable`1[System.Single]'.
しかし、次の作品(唯一の違いは、私が.Sum()
を適用する前にToList()
を使用しているということです - しかしdefinition of Sum()によると、それはせずに動作するはずですToList()
を使用しています - 正確?
float? totalSum = (from t in _context.Orders
join c in _context.Customers.Where(c => c.region=="NW")
on t.CustomerId equals c.CustomerId
select t.price).ToList().Sum();
UPDATE:
price
属性のデータ型は、SQL Server 2012
すべての変数とプロパティの実際のタイプは何ですか?エンティティはどのようにマップされていますか?このエラーは、 'price'が' float? 'ではないか、またはあなたのマッピングが乱れていることを示唆しています。 –
@JeffMercadoあなたのコメントを読んだ後、私は 'price'が本当に 'float? 'であることを二度チェックしました。 – nam
' select t.price ?? 0.0f'である。どうやら何かが翻訳を台無しにしているので、問題のフィールドをすべて横断して修正するかもしれない。しかし、まだそれは_actual_クラスの定義と_actual_マッピングを参照するのに役立ちます...問題を診断するのに十分な情報がまだなく、あなたはまだその情報を提供していません。 –