ホームページ > バックエンド開発 > C++ > Null 値を含む LINQ クエリの「Int32 へのキャストに失敗しました」エラーを解決するにはどうすればよいですか?

Null 値を含む LINQ クエリの「Int32 へのキャストに失敗しました」エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-10 20:41:45
オリジナル
601 人が閲覧しました

How to Resolve

LINQ クエリでの null 値の処理: 「Int32 に変換できません」エラーの解決

LINQ クエリで「実体化された値が null であるため、値の型 'Int32' に変換できません」エラーが発生した場合、これは、予期される非 null 型と、クエリ内に null 値が存在する可能性との間に不一致があることを示しています。クエリの結果。

元のクエリ:

<code class="language-csharp">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>
ログイン後にコピー

質問:

このクエリは、特定の userID を持つユーザーの ch.Amount の合計を取得します。ただし、CreditHistory テーブルにそのユーザーのレコードがない場合、クエリはデータベース結果の null 値を Int32 に変換しようとし、エラーが発生します。

解決策:

null 値に対応するための解決策には、null 許容型の導入と null ケースの適切な処理が含まれます。

null 許容型を使用します:

まず、select 句の式を int? などの null 許容型に変換します。これにより、プロパティに null 値が含まれる可能性があることがコンパイラーに伝えられます:

<code class="language-csharp">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();</code>
ログイン後にコピー

null 合体演算子 (??) を使用します:

次に、?? 演算子を使用して null の場合を処理します。式が空かどうかをチェックし、デフォルト値 (この場合は 0) を返します:

<code class="language-csharp">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>
ログイン後にコピー

これらの変更を組み込むことで、クエリは null 値を適切に処理し、適切な結果を返し、変換エラーを防ぐことができます。

以上がNull 値を含む LINQ クエリの「Int32 へのキャストに失敗しました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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