2013-01-22 15 views
5

कास्ट करने के लिए जब मैंLinq अंक

InvTotal = g.Sum(d => d.Field<double>("Total")) < 0 ? "W" : "N" चलाने का प्रयास में असमर्थ है, मैं एक

Unable to cast object of type 'System.Double' to type 'System.String' त्रुटि मिलती है।

मैं कैसे कोड इसके लिए इसे सफलतापूर्वक संकलन को बदलने की जरूरत है।

+1

के प्रकार 'InvTotal' है? – kmatyaszek

उत्तर

10

मैं तुम्हें सही कोष्ठक की जरूरत है।

var InvTotal = (g.Sum(d => d.Field<double>("Total")) < 0) ? "W" : "N" 

उनके बिना संकलक 0 ? "W" : "N" पहले संकलन होगा, और इस बात का परिणाम तुलना में इस्तेमाल किया जाएगा। अगर यह करने के लिए आता

कभी कभी, सी # संकलक एक छोटे से मदद की जरूरत है? ऑपरेटर।

+1

कोष्ठक एक मुद्दा नहीं है। ऑपरेटरों पूर्वता को देखो [सी # ऑपरेटर्स] (http://msdn.microsoft.com/en-us/library/6a71f45d.aspx) – Rafal

1

InvTotal के प्रकार क्या है? मुझे लगता है कि यह वर्तमान में एक डबल है। यदि आप टाइप को स्ट्रिंग में बदलते हैं, या InvTotal की घोषणा को हटा दें और अपनी लाइन को "var InvTotal = g.Sum ..."

0

मुझे लगता है कि इस मामले में यह ब्रांड्स के साथ कोई समस्या नहीं है।

समस्या InvTotal के प्रकार के साथ है, यदि आप var InvTotal =.... लिखते हैं तो सब ठीक रहेगा।

मार्टेन जवाब देने के लिए स्पष्टीकरण:

Error: "Cannot implicitly convert type 'int' to 'bool'"

सी # नहीं है:

int x = 2; 
var tmp = x ? "W" : "N"; 

अगर हम प्रयास करते हैं, हम त्रुटि निम्न मिल जाएगा:

सी # में हम ऐसा ही कुछ नहीं लिख सकते हैं सी ++ जहां शून्य झूठी और nonzero मान इंगित करता है सच इंगित करता है। आप भी त्रिगुट ऑपरेटर के प्रथम अनुभाग में कोष्ठक बिना एकाधिक तर्क ऑपरेटरों हो सकता है

g.Sum(d => d.Field<double>("Total")) < 0 ? "W" : "N" 

:

तो तुम ऐसा ही कुछ लिख सकते हैं

g.Sum(d => d.Field<double>("Total")) < 0 && 1 == 1 && 2 != 4 && 9 != 0 ? "W" : "N"; 
+0

आप InvTotal के प्रकार पता नहीं है, तो आप कैसे अपवाद जो कि कहते हैं की व्याख्या कैसे करते एक डबल स्ट्रिंग में परिवर्तित नहीं किया जा सकता है? चूंकि? ऑपरेटर काम करता है यह एक स्ट्रिंग में परिणाम होना चाहिए, क्योंकि यह परिणामस्वरूप प्रकार का है? ऑपरेटर। – Maarten

+0

यह समझाना मुश्किल है क्योंकि @ user1936588 ने हमें 'InvTotal' के प्रकार के बारे में नहीं बताया, लेकिन मैंने आपको कैसे दिखाया, आपको ब्रांड्स का उपयोग करने की आवश्यकता नहीं है। तो मुझे लगता है कि @ user1936588 विभिन्न कीवर्ड के बिना ब्रांड्स के साथ आपके समाधान का प्रयास कर सकता है, और हम देखेंगे कि क्या ब्रांड्स आवश्यक हैं। बीटीडब्ल्यू, यह दिलचस्प सवाल है :) – kmatyaszek

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^