2011-10-21 12 views
5

भयानक शीर्षक के लिए माफ़ी, मुझे पूरा यकीन नहीं था कि मेरी समस्या कैसे वाक्यांशित करें।LINQ ग्रुपिंग डेटा दो बार

CustAcct cust = new CustAcct(); 
cust.Name = "John Doe"; 
cust.Account = "ABC123"; 
cust.OrderTotal = 123.43 
cust.OrderQty = 4; 
cust.TransDate = "12/26/2010 13:00" 

कृपया बहुत अधिक समय अगले भाग की आलोचना खर्च नहीं करते क्योंकि यह वास्तव में एक शॉपिंग कार्ट/ग्राहक सामान के साथ सौदा नहीं करता है लेकिन विचार है:

मैं एक वस्तु की तरह लग रहा है कि है वही, मैं बस कुछ ऐसा उपयोग करना चाहता था जो हर किसी के साथ बहुत परिचित है।

एक खाते में एक से अधिक ग्राहक हो सकते हैं, और एक ग्राहक के पास एक से अधिक खाते हो सकते हैं।

तो तुम हो:

Account Customer OrderTotal OrderQty 
ABC123  John Doe 155.55   6 
ABC321  John Doe  97.94   4 
ABC123  Jane Zoe  79.10   3 
ABC321  Jane Zoe 142.99   7 

मैं:

List<CustAcct> custList = new List<CustAcct>(); 
custList.Add("John Doe", "ABC123", 123.43, 4, "12/26/2010 13:00"); 
custList.Add("John Doe", "ABC123", 32.12, 2, "12/27/2010 10:00"); 
custList.Add("John Doe", "ABC321", 43.34, 1, "12/28/2010 15:00"); 
custList.Add("John Doe", "ABC321", 54.60, 3, "12/28/2010 16:00"); 
custList.Add("Jane Zoe", "ABC123", 46.45, 2, "12/28/2010 17:00"); 
custList.Add("Jane Zoe", "ABC123", 32.65, 1, "12/29/2010 12:00"); 
custList.Add("Jane Zoe", "ABC321", 67.65, 3, "12/29/2010 23:00"); 
custList.Add("Jane Zoe", "ABC321", 75.34, 4, "12/30/2010 08:00"); 

मैं करना चाहते हैं क्या प्रत्येक खाते और ग्राहक के लिए सभी OrderTotal और OrderQty की राशि मिल तो मेरे उत्पादन प्रकार दिखाई देगा मेरे LINQ से ऑब्जेक्ट्स बुक और 101 LINQ नमूने के माध्यम से किया गया है और यह पता नहीं लगा सकता कि इसे प्राप्त करने के बारे में कैसे जाना है। धन्यवाद।

+0

क्या आप विधि वाक्यविन्यास या क्वेरी वाक्यविन्यास का उपयोग कर रहे हैं? –

+0

मैं क्वेरी सिंटैक्स का उपयोग कर रहा हूं। सीस्टलिस्ट में सी से ... – Stephen

+0

क्या आप खाता/ग्राहक कॉम्बो द्वारा समूह करना चाहते हैं? या फिर ग्राहक द्वारा समूह, फिर खाते से? सूक्ष्म अंतर, लेकिन मेरे उत्तर को प्रभावित करता है ... –

उत्तर

9

आप समूह और योग कर सकते हैं इस तरह:

from ca in custList 
group ca by new { ca.Name, ca.Account } into g 
select new { 
    g.Key.Account, 
    g.Key.Name, 
    OrderTotal = g.Sum(o => o.OrderTotal), 
    OrderQty = g.Sum(o => o.OrderQty) 
}; 

See it in action

+0

धन्यवाद। यह पूरी तरह से काम किया। – Stephen

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