ホームページ > バックエンド開発 > C++ > LINQ で Null 許容整数を合計するときに「キャスト失敗」エラーを回避するにはどうすればよいですか?

LINQ で Null 許容整数を合計するときに「キャスト失敗」エラーを回避するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-10 20:56:45
オリジナル
664 人が閲覧しました

How to Avoid

LINQ クエリでの null 値の処理: 「変換に失敗しました」エラーの解決

LINQ クエリを実行すると、開発者は「具体化された値が null であるため、値の型 'Int32' に変換できません。」というエラーが発生する場合があります。この問題は、null を許可する値を null を許可しない値の型に変換しようとすると発生します。 。

次の LINQ クエリは、この状況を示しています。

<code>var creditsSum = (from u in context.User
                  join ch in context.CreditHistory on u.ID equals ch.UserID                                        
                  where u.ID == userID
                  select ch.Amount).Sum();</code>
ログイン後にコピー

このクエリは、CreditHistory テーブル内の特定の userID の Amount 列の合計を計算します。ただし、CreditHistory テーブルに指定されたユーザーのレコードがない場合、ch.Amount 式は null を返します。この null 値は null 非許容値型 Int32 に変換できないため、エラーが発生します。

解決策: null 値の処理

LINQ クエリで null 許容値を処理するには、次の 2 つのアプローチが考えられます。

  1. Use DefaultIfEmpty: このメソッドは、行が返されない場合、クエリ結果にデフォルト値を追加します。特定のシナリオでは、クエリを次のように変更できます:
<code>var creditsSum = (from u in context.User
                  join ch in context.CreditHistory on u.ID equals ch.UserID                                        
                  where u.ID == userID
                  select ch.Amount).DefaultIfEmpty(0).Sum();</code>
ログイン後にコピー
  1. 条件演算子 (??) の使用: 条件演算子 (??) を使用すると、結果が null の場合に使用されるデフォルト値を指定できます。クエリは次のように書き換えることができます:
<code>var creditsSum = (from u in context.User
                  join ch in context.CreditHistory on u.ID equals ch.UserID                                        
                  where u.ID == userID
                  select (int?)ch.Amount).Sum() ?? 0;</code>
ログイン後にコピー

このバージョンでは、式 (int?)ch.Amount は値を明示的に int? に変換し、null であってもよいことを示します。後続の ?? 演算子は、NULL 値をデフォルト値の 0 に置き換えます。

これら 2 つのメソッドのいずれかを実装することで、クエリは null 値を正常に処理し、目的の結果を返すことができます。

以上がLINQ で Null 許容整数を合計するときに「キャスト失敗」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート