2011-04-25 17 views
15

मेरे पास List<Item>संभव शून्य ऑब्जेक्ट के आईडी के साथ ग्रुपबी

प्रत्येक आइटम में एक प्रोग्राम है, जिसमें एक आईडी है।

यदि कोई आइटम अभी तक किसी प्रोग्राम से जुड़ा हुआ नहीं है, तो यह प्रोग्राम शून्य होगा।

मैं इसे द्वारा समूह के सभी आइटम के लिए करना चाहते कार्यक्रम की पहचान

है यही तो मैं कोशिश की है:

var listaAgrupada = client.ListarItens(null, null, null).GroupBy(x => x.Programa.Id).ToList(); 

यह काम करता है, तो सभी आइटम एक कार्यक्रम है। लेकिन अगर एक कार्यक्रम रिक्त है, यह एक System.NullReferenceException फेंकता है: "। ऑब्जेक्ट संदर्भ एक वस्तु का एक उदाहरण के लिए सेट नहीं"

संदेश =

मेरा मानना ​​है कि यह इस तथ्य के कारण है कि, जैसा कि प्रोग्राम शून्य है, मैं इसके आईडी तक नहीं पहुंच सकता।

मुझे सभी आइटमों की आवश्यकता है, भले ही उनका प्रोग्राम शून्य है (और मैं उन्हें नल प्रोग्राम द्वारा समूहित करना चाहता हूं), इसलिए उन्हें छोड़कर कोई विकल्प नहीं है।

मैं दो संभव समाधान में सोचा है, लेकिन मैं कैसे करना है उनमें से किसी को यकीन नहीं है:

एक इस GroupBy(x => x.Programa == null || x.Programa.Id) की तरह कुछ होगा (जो काम नहीं करता है)

अन्य हो एक खाली कार्यक्रम वस्तु जहां कार्यक्रम रिक्त है जोड़ना होगा, लेकिन मैं यह कैसे

बेशक

, मैं भी अन्य समाधान के लिए खुला रहा हूँ करने के लिए पता नहीं है अग्रिम

में

धन्यवाद

+0

जब आप कोई सूची आइटम बनाते हैं, तो उसे एक 'शून्य' मान असाइन करें जिसे आप कभी भी स्ट्रिंग या 99 999 के लिए ईएमटीटीई जैसे इंट –

उत्तर

27

आप कर सकते हैं समूह के सभी null कार्यक्रम एक साथ मान लिया जाये और Id गैर नकारात्मक हो जाएगा, कैसे कुछ इस तरह के बारे में:

GroupBy(x => x.Programa == null ? -1 : x.Programa.Id) 
10
साथ # नई सी 6.0

आप भी उपयोग कर सकते हैं:

.GroupBy(x => x.Programa?.Id) 

जहां ?. शून्य-सशर्त ऑपरेटर है। जब सवाल पूछा गया तो यह संभावना उपलब्ध नहीं थी।

+0

के लिए उपयोग नहीं करेंगे, मुझे लगता है कि आपको इसे GroupBy (x => x ?programa) ? आईडी) यह तब इस तथ्य के कारण है कि उसके मामले में प्रोग्राममा संपत्ति आइटम नहीं है :) – Martijn

+0

@Martijn उस सुधार के लिए धन्यवाद। मैंने अपना जवाब सही किया। मैंने उस मामले को संभालने का फैसला नहीं किया जहां 'x' (' आइटम 'स्वयं) शून्य है (जो अभी भी उड़ाएगा), लेकिन केवल वह मामला जहां' प्रोग्रामा 'शून्य है। इस तरह मैं प्रश्न की व्याख्या करता हूं, और डीसीपी द्वारा उत्तर की भावना के समान। –

+0

मैंने पिछले हफ्ते इस मुद्दे को हल करने की कोशिश की। मुझे बाएं शामिल होने में कोई समस्या थी, और मैंने सोचा कि समस्या तब थी जब मैंने 'नया चयन' पर संभावित शून्य मूल्य निर्धारित करने का प्रयास किया ... और पूरे समय यह मुद्दा 'groupby' था। धन्यवाद! – Pablo

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