SORU
27 Ocak 2012, Cuma


C# || operatörü null Boolean değerleri ile çalışmıyor

Benim SERİ içinde aşağıdaki kod parçası var:

    where (tf.Shipped || tf.Ordered || tf.Processed)

Sevk ve İşlenmiş Sıralı tüm null Boolean alanlar olduğunu unutmayın

Aşağıdaki mesajı alıyorum:

Operatör || tür işlenen 'bool?' ve 'bool?' uygulanamaz

Evet, null Boolean değerleri olması lazım ve kullanmam lazım bu nasıl çözüleceği YA da ( | | ) değil tabii.

CEVAP
27 Ocak 2012, Cuma


Bir adım geri almak ve sorunu düşünmek. Widget emredildi, ya da widget sevk edildi, ya da widget işlendi widget bir koleksiyon.

Bilginiz için dört olası durum vardır"": . sipariş

  • bu widget emredildive bunu biliyorum(true)
  • bu widget emredildive bunu biliyorum(yanlış)
  • bu widget emredildiama bilmiyorum(null)
  • bu widget emredildiama bilmiyorum(null)

Dört eyalette ama sadece üç değer Olası değer vardır. "Emir" boş durumda . bu nedenle ^em>sorgu sonuçlarını veya dahil olup olmadığını bilmiyorum.

Derleyici bunu da bilmiyor.

Yeterli bilgi derleyici için istediğin mantığı olan bir sorgu vermek için kullanılamaz.Derleyici yapmaz bir tahmin ve muhtemelen vermek kötü sonuçlar; derleyici olduğunu söyleyecek sana yeterli bilgi burada yapmanız gereken daha çok iş yapmak için sorgu anlaşılır.

Ne yapman gerektiğini söylemekcevabı bilmiyorsun durumda. Sorgu "sipariş edilen tüm Aletler, sevk ya da işlenmiş" imkansız bazı Aletler çünkübilmiyoruzsipariş, sevk veya işlenmiş, ve bu yüzden onları dahil olup olmadığını bilmiyoruz. Ama sorgu "tüm Aletlerbiliyorumemredildibiliyorumsevk edildibiliyorumişlendi" derleyici mantıklı bir sorgu

where (tf.Shipped ?? false) || (tf.Ordered ?? false) || (tf.Processed ?? false)

"Eğer birlikte olup olmadığını bilmiyorum eğer doğru değilse, vb, olduğunu varsayalım".

"Tüm Aletler . sorgu isteyebilirsiniz yerine ^em>kesinlikle vardı, ya da olabilirdisevk, ya da işlenmiş emretti

where (tf.Shipped ?? true) || (tf.Ordered ?? true) || (tf.Processed ?? true)

Derleyici yaramayacak sanırım hangi tarafta istediğiniz için hata olduğunda yetersiz bilgi vermek doğru sonuçlar; derleyici olabilir sanırım yanlış değiliz, iş, kararlar senin adına. Bu kararı vermek zorunda kalacaksın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Engadget

    Engadget

    18 EYLÜL 2006
  • grickle

    grickle

    22 AĞUSTOS 2006
  • Marques Brownlee

    Marques Brow

    21 Mart 2008