के साथ शून्य परिणामों को संभालना मैं LINQ पर नया हूं और तालिका से ग्राफ़ में कुछ डेटा पॉइंट बनाने की कोशिश कर रहा हूं। इस तालिका में महत्व के तीन फ़ील्ड आईडी, समय और मूल्य हैं। मैं एक चुने हुए आईडी के लिए निर्धारित समय पर औसत मूल्य प्राप्त करने के लिए एक प्रश्न लिख रहा हूं। LINQ मैं लिखा है इस प्रकार है:LINQ औसत() विधि
var value = (from t in _table
where t.Id == id
&& t.Time >= intervalStartTime
&& t.Time <= intervalEndTime
select t.Value).Average();
हालांकि इस के साथ रनटाइम पर दुर्घटनाओं:
"शून्य मान प्रकार System.Decimal साथ एक सदस्य जो गैर-व्यर्थ है करने के लिए आवंटित नहीं किया जा सकता मान प्रकार .. "
निश्चित अंतराल पर कोई डेटा तो एसक्यूएल LINQ अशक्त रिटर्न, जो मैं 0 करने के लिए एकत्रित हो पसंद आया होगा उत्पन्न करता है, लेकिन इसके बजाय आवेदन दुर्घटनाओं है। क्या इस LINQ क्वेरी को सही तरीके से संभालने में सक्षम होने का कोई तरीका है?
[Serializable]
[Table(Name = "ExampleTable")]
public class ExampleTable
{
[Column(Name = "Id")]
public int Id { get; set; }
[Column(Name = "Time")]
public DateTime Time { get; set; }
[Column(Name = "Value")]
public int Value{ get; set; }
}
धन्यवाद कि यह किया गया है। – Magpie
सिर्फ इस मुद्दे में दूसरों की सहायता के लिए: यदि क्वेरी * कोई पंक्ति नहीं लौटाती है *, वास्तव में कुछ भी मदद नहीं करेगा। आपको सिर्फ क्वेरी को पूरी तरह से चलाने से बचना होगा। मुझे ऐसा अनुभव हुआ। – horace
@horace: यह बस सच नहीं है। औसत, न्यूनतम, अधिकतम, क्वेरी सभी पंक्तियों से मेल नहीं खाती है जब तक कि कुल परिणाम शून्य न हो *। जैसा कि आप ऊपर दिए गए प्रश्न में देख सकते हैं, आपको कुल मिलाकर अभिव्यक्ति को लागू करने के लिए एक कास्ट की आवश्यकता होगी जब कुल अभिव्यक्ति एक शून्य प्रकार का नहीं है। (दुर्लभ मामले में यह अभी भी काम नहीं करता है, आप शायद एक flaky LINQ प्रदाता से निपट रहे हैं। यह LINQ की गलती नहीं है, और कोई प्रदाता मुझे पता है कि गड़बड़ है।) – Ruben