Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengendalikan Nilai Null dalam LINQ Sum() untuk Mengelakkan Ralat 'The Cast to Value Type 'Int32' Failed'?

Bagaimana untuk Mengendalikan Nilai Null dalam LINQ Sum() untuk Mengelakkan Ralat 'The Cast to Value Type 'Int32' Failed'?

Patricia Arquette
Lepaskan: 2025-01-10 20:52:41
asal
355 orang telah melayarinya

How to Handle Null Values in LINQ Sum() to Avoid

Pengendalian null dalam pertanyaan LINQ: Menyelesaikan ralat "Tidak boleh menukar kepada jenis nilai 'Int32'"

Kod ini menggunakan pertanyaan LINQ untuk mendapatkan semula jumlah amaun sejarah kredit untuk ID pengguna tertentu. Apabila tiada rekod dalam jadual CreditHistory, anda akan menghadapi ralat kerana mengembalikan nilai nol.

Tulis semula pertanyaan untuk mengendalikan nilai nol

Ralat berlaku kerana kaedah Sum() menjangkakan nilai bukan nol, tetapi pertanyaan mungkin mengembalikan nilai nol. Untuk menyelesaikan masalah ini, anda boleh mengubah suai pertanyaan untuk menerima jenis nullable menggunakan operator atau kaedah DefaultIfEmpty().

Gunakan operator

Operator

?? boleh digunakan untuk mengendalikan nilai nol dengan menyatakan nilai lalai:

<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>
Salin selepas log masuk

Kod ini mula-mula menukar sifat Amount kepada int untuk menunjukkan bahawa ia boleh menjadi batal. Jumlah tersebut kemudiannya dikira menggunakan kaedah Sum(), yang mengembalikan int?. Kemudian gunakan operator ?? untuk menetapkan nilai lalai 0 jika hasilnya kosong.

Gunakan kaedah DefaultIfEmpty()

Sebagai alternatif, anda boleh menggunakan kaedah DefaultIfEmpty() untuk mengendalikan nilai kosong:

<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>
Salin selepas log masuk

Kaedah ini menambah nilai lalai (0) pada jujukan sebelum melakukan operasi Sum(). Jika jujukan tidak mengandungi unsur, nilai lalai akan digunakan untuk pengiraan jumlah.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Nilai Null dalam LINQ Sum() untuk Mengelakkan Ralat 'The Cast to Value Type 'Int32' Failed'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan