2012-05-09 15 views
6

sdr मेरा sqldatareader है और मैं यह जांचना चाहता हूं कि curPrice मान जो दशमलव प्रकार का है, शून्य है।अंतर्निहित रूप से प्रकार 'दशमलव' को परिवर्तित नहीं कर सकता? 'दशमलव' करने के लिए।

inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);

यह मैं त्रुटि संदेश आ रहा है:

Cannot implicitly convert type 'decimal?' to 'decimal'. An explicit conversion exists (are you missing a cast?)

कहाँ मैं गलत हो रहा हूँ, कृपया कोई मुझे बताओ।

उत्तर

10

या तो curPrice को हटाने योग्य या उपयोग करने के लिए कनवर्ट करें। उपयोग करने योग्य प्रकार की वैल्यू प्रॉपर्टी।

तो curPrice एक वर्ग की संपत्ति है तो

public decimal? curPrice 
{ 
    get; 
    set; 
} 
19

decimal? इंगित करता है कि यह nullable दशमलव है; वास्तविक मान प्राप्त करने के लिए आपको Value संपत्ति का उपयोग करना होगा (यदि यह मौजूद है, HasValue के माध्यम से निर्धारित)।

मुझे लगता है कि curPrice एक गैर-शून्य दशमलव है, इस मामले में आपको अपने टर्नरी ऑपरेटर के सच्चे पक्ष से null से वापस लौटने के लिए बेहतर मूल्य पता करने की आवश्यकता है।

+3

मैं उलझन में हूं। क्या आपके पास यह समझाने के लिए कोड नमूने होंगे कि आपको क्या मतलब है .. असली खेद है कि यह मेरे लिए बहुत नया है। – user1270384

3

कैसे decimal करने के लिए decmial? प्रकार परिवर्तित करने के बारे में?

शून्य होने पर आपको inrec.curPrice पसंद करना होगा।

inrec.curPrice = sdr.GetDecimal(7) ?? 0M; 

मुझे लगता है कि यदि वापस लौटाया गया है तो आप 0 का उपयोग करना चाहेंगे। यदि 0M को किसी अन्य दशमलव मान में परिवर्तित नहीं किया गया है।

--- पुनरावृत्ति के बाद अद्यतन

inrec.curPrice = sdr.IsDBNull(7) ? 0M : sdr.GetDecimal(7); के बारे में कैसे?

+0

जब मैं ऐसा करता हूं, मुझे यह त्रुटि मिलती है: त्रुटि \t 7 ऑपरेटर '??' 'दशमलव' और 'दशमलव' – user1270384

+0

आह के संचालन पर लागू नहीं किया जा सकता है .. मैंने अभी एमडीएसएन में '.GetDecimal()' देखा है, यह 'दशमलव' देता है और 'दशमलव' नहीं देता है, इसलिए मेरा जवाब बकवास था। उसके लिए माफ़ करना। –

4
inrec.curPrice = sdr.GetValueOrDefault(0m) 

null तो आप कुछ है कि null हो सकता है करने के लिए अपने मूल्य निर्धारित नहीं कर सकते के लिए के बाद से बाईं ओर (Price) की अनुमति नहीं है। इसलिए, null पर डिफ़ॉल्ट मान वापस करने के लिए .GetValueOrDefault(decimal defaultValue) का उपयोग करें।