コード:
double cafeSales = db.InvoiceLines
.Where(x =>
x.UserId == user.UserId &&
x.DateCharged >= dateStart &&
x.DateCharged <= dateEnd)
.Sum(x => x.Quantity * x.Price);
エラー:
具体化された値が null であるため、値型 'Double' へのキャストが失敗しました。結果の型のジェネリック パラメーターまたはクエリのいずれかで、null 許容型を使用する必要があります。
私がすでに見たもの:
具体化された値が null であるため、値型 'Int32' へのキャストが失敗しました
具体化された値が null であるため、値型 'Decimal' へのキャストが失敗しました
私が試したこと:
double cafeSales = db.InvoiceLines
.Where(x =>
x.UserId == user.UserId &&
x.DateCharged >= dateStart &&
x.DateCharged <= dateEnd)
.DefaultIfEmpty()
.Sum(x => x.Quantity * x.Price);
と:
double? cafeSales = db.InvoiceLines
.Where(x =>
x.UserId == user.UserId &&
x.DateCharged >= dateStart &&
x.DateCharged <= dateEnd)
.Sum(x => x.Quantity * x.Price);
これらはどちらも機能しません。問題の原因は、渡した UserId の行がそのテーブルにないことだとわかっています。その場合、Sum() が 0 を返すことをお勧めします。何か案は?