ホームページ >バックエンド開発 >C++ >キャストの失敗を避けるために、LINQ クエリで Null 値を処理する方法は?

キャストの失敗を避けるために、LINQ クエリで Null 値を処理する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-10 20:46:41942ブラウズ

How to Handle Null Values in LINQ Queries to Avoid Cast Failures?

LINQ クエリでの Null 値の処理: 型変換エラーの解決

LINQ クエリが null 値を返す場合、「値の型 'Int32' を null に変換できません。これを解決するには、結果の型またはクエリのジェネリック パラメーターは null 許容型を使用する必要があります。」というエラーがスローされることがあります。エラーが発生し、null 値が許可される場合は、次のアプローチを検討してください:

方法 1: DefaultIfEmpty と Sum を使用し、デフォルト値を指定します

<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).DefaultIfEmpty(0).Sum();</code>

このメソッドは、DefaultIfEmpty テーブルに一致するレコードがない場合に、CreditHistory を使用してデフォルト値 (この場合は 0) を挿入します。

方法 2: 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() ?? 0;</code>

このメソッドでは、Amount 属性を null 許容型 (int?) に変換するようにクエリが変更されます。これにより、値が null である可能性があることがコンパイラに通知されます。次に、?? 演算子を使用して null 値の場合を処理し、値が null の場合はデフォルト値 (この場合は 0) を割り当てます。

方法 3: Coalesce 機能を使用する

<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 COALESCE(ch.Amount, 0)).Sum();</code>

このメソッドは、COALESCE 関数を使用して、SQL クエリ内で null 値を指定されたデフォルト値 (この場合は 0) に直接置き換えます。

以上がキャストの失敗を避けるために、LINQ クエリで Null 値を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。