LINQ to SQL を使用して、WCF サービスから返された結果セットの行を合計しようとしています。基本的な選択、並べ替え、フィルタリングなどに LINQ を使用できます。
しかし、Group By / Sum を実行しようとすると、以下のクエリから Take(5) を実行しようとすると、「値を Null にすることはできません」というエラー メッセージが表示されます。(results
は null ではなく、1000 個以上のアイテムがquery
ありますが、返そうとすると null になります:)
編集:以下の回答に記載されているように、無効なキャストを削除しました。代わりに、集計結果を選択して、オーダーメイドのカスタム クラスにします。これで、ページはエラーなしで実行されますが、group by / sum は機能しません.... グループごとに合計するのではなく、結果の上位 5 つの値を取得するだけです。なんで?
var query = (from h in results
group h by h.Order into hh
select new TopOrders()
{
Order = hh.Key,
Total= hh.Sum(r => r.Price)
}).OrderByDescending(i => i.Total);
return query.Take(5).ToList();
私が指摘できる唯一のしわは、Order 自体がコレクション (OrderID、OrderName など) であるため、hh.Key.Order.OrderID などで明示的にグループ化しようとしましたが、効果がありませんでした。
あなたが見ることができるものから私が欠けているものはありますか?ありがとう。