Di SQL Server, Anda dapat menggunakan IsNull()
fungsi untuk memeriksa apakah suatu nilai adalah null, dan jika ya, mengembalikan nilai lain. Sekarang saya bertanya-tanya apakah ada yang serupa di C #.
Misalnya, saya ingin melakukan sesuatu seperti:
myNewValue = IsNull(myValue, new MyValue());
dari pada:
if (myValue == null)
myValue = new MyValue();
myNewValue = myValue;
Terima kasih.
c#
.net
sql-server
isnull
Neraka
sumber
sumber
this.BinaryExists = vModel.BinaryExists ?? 0;
menjadithis.BinaryExists = vModel.BinaryExists ?? false;
.Sayangnya, tidak ada operator penggabungan nol yang bekerja dengan DBNull; untuk itu, Anda perlu menggunakan operator terner:
sumber
(object)oldValue ?? (object)DBNull.Value)
akan sama dengan((object)oldValue == null) ? (object)DBNull.Value : (object)oldValue
perbedaan masalah yang ditangani oleh solusi Robert Rossney.sumber
new MyValue()
akan dieksekusi bahkan ketikamyValue
bukan nol dan tidak diperlukan !!Gunakan metode Equals:
sumber
Untuk bekerja dengan DB Nulls, saya membuat banyak aplikasi VB saya. Saya menyebutnya Cxxx2 karena mereka mirip dengan fungsi Cxxx bawaan VB.
Anda dapat melihatnya di proyek Ekstensi CLR saya
http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967
sumber
Anda Menulis Dua Fungsi
Mereka Bekerja Dengan Sangat Baik
sumber
Saya telah menggunakan metode ekstensi berikut pada jenis DataRow saya:
pemakaian:
Saya memeriksa keberadaan kolom terlebih dahulu karena jika tidak ada hasil kueri yang memiliki nilai bukan nol untuk kolom itu, objek DataTable bahkan tidak akan menyediakan kolom itu.
sumber
Gunakan metode di bawah ini.
sumber
sumber
Ini berarti setengah lelucon, karena pertanyaannya agak konyol.
Ini adalah metode ekstensi, namun ia memperluas System.Object, jadi setiap objek yang Anda gunakan sekarang memiliki metode IsNull ().
Kemudian Anda dapat menghemat banyak kode dengan melakukan:
bukan yang super timpang:
sumber
Object
objek aktual untuk beroperasi, dan jika objek tersebut adalah Nothing (tepatnya kasus yang Anda coba uji dalam Q ini) tidak ada contoh untuk kelas ekstensi untuk beroperasi dan dengan demikian akan melempar pengecualian NullObject.Object
dalam VB. Lihat pertanyaan SO ini atau posting blog ini .