Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengelakkan Ralat 'Hantar Gagal' Apabila Menjumlahkan Integer Boleh Null dalam LINQ?
Mengendalikan nilai nol dalam pertanyaan LINQ: menyelesaikan ralat "Penukaran gagal"
Apabila melaksanakan pertanyaan LINQ, pembangun mungkin menghadapi ralat: "Tidak boleh menukar kepada jenis nilai 'Int32' kerana nilai terwujud adalah batal Isu ini berlaku apabila cuba menukar nilai yang boleh dibatalkan kepada jam jenis nilai tidak boleh dibatalkan." .
Pertanyaan LINQ berikut menggambarkan situasi ini:
<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>
Pertanyaan ini mengira jumlah lajur Amaun untuk ID pengguna tertentu dalam jadual CreditHistory. Walau bagaimanapun, jika tiada rekod untuk pengguna yang ditentukan dalam jadual CreditHistory, ungkapan ch.Amount mengembalikan nol. Nilai nol ini tidak boleh ditukar kepada jenis nilai tidak boleh dibatalkan Int32, mengakibatkan ralat.
Penyelesaian: Mengendalikan nilai nol
Untuk mengendalikan nilai nullable dalam pertanyaan LINQ, terdapat dua pendekatan yang mungkin:
<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>
<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>
Dalam versi ini, ungkapan (int?)ch.Amount secara eksplisit menukar nilai kepada int?, menunjukkan bahawa ia boleh menjadi batal. Operator seterusnya menggantikan mana-mana nilai nol dengan nilai lalai 0.
Dengan melaksanakan salah satu daripada dua kaedah ini, pertanyaan boleh berjaya mengendalikan nilai nol dan mengembalikan hasil yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat 'Hantar Gagal' Apabila Menjumlahkan Integer Boleh Null dalam LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!