2009-09-09 18 views
8

पुhew कहां से शुरू करें ... ठीक है, मेरे पास एक सूची है जो मुझे दो गुणों के आधार पर छोटी सूची में कटौती करनी है। जब मैंने छोटी सूची के साथ काम करना समाप्त कर दिया है, तो मैं चाहता हूं कि यह आइटम मूल सूची से हटा दिया गया हो :)सी # सूची <> ऑर्डर/समूह द्वारा

f.ex. मेरे पास एक सूची <> ग्राहक उत्पाद है, जिसमें दो मान ग्राहक आईडी और उत्पाद आईडी हैं। मैं इस सूची आदेश देने से शुरू:

var orderedList = CustomerProducts.OrderBy(c => c.CustomerID).ThenBy(c => c.ProductID)ToList();

मान लें ordereded सूची अब इस तरह दिखता है:

CustomerID = 1, productid = 61
CustomerID = 1, productid = 61
ग्राहक आईडी = 1, उत्पाद आईडी = 87
ग्राहक आईडी = 2, उत्पाद आईडी = 81
CustomerID = 2, productid = 53

अब मैं एक नई सूची और सूची में केवल पहले दो आइटम शामिल करना चाहते हैं, (क्योंकि वे एक ही CustomerID और ProductID है) और orderedList से इन दो आइटम को हटाने, और फिर बाकी के साथ ऐसा करना जारी रखें ... जबकि आदेश दिया गया सूची खाली नहीं है।

somehting की तरह ...

जबकि (orderedList.Count> 0)
{
// नई सूची में एक ही मान है कि बनाने के ...
// पर कुछ काम करना नई सूची
// orderedList
// जारी रखने से नई सूची को दूर ...
}

इस के लिए एक स्मार्ट समाधान के किसी भी विचार ?? स्मार्ट अर्थ शॉर्ट कोड और सुंदर बिल्कुल :)

+1

बस सुनिश्चित करें कि आप एक जवाब है कि अपने porblem हल मिल बनाने के लिए - क्या तुम सच में लगता है कि उत्तरोत्तर छोटे आदेश दिया सूची बनाए रखने के लिए (जो संभवतः कम से कम थोड़ा महंगा है) की आवश्यकता है, या क्या आपको क्रम में ग्राहक/उत्पादक से मेल खाने वाले समूहों में आइटम को संसाधित करने की आवश्यकता है? पूर्व को लगातार नई सूचियों (या शुरुआत से हटाकर, दोनों अपेक्षाकृत महंगी परिचालनों) को हटाने की आवश्यकता होती है, जबकि उत्तरार्द्ध एक सीधी-आगे समूहिंग ऑपरेशन का उपयोग कर सकते हैं। –

+0

मैं जोनाथन की टिप्पणी से सहमत हूं। ऐसा लगता है कि समस्या के समाधान के बारे में आपके सिर में एक विचार है लेकिन इसे होने में परेशानी हो रही है। हथौड़ा के बारे में हमें बताने के बजाय आप इसका उपयोग करने की कोशिश कर रहे हैं, हमें बताए गए घर के बारे में बताएं; हथौड़ा नलसाजी के लिए गलत उपकरण हो सकता है। क्या आप अपने द्वारा किए जा रहे व्यवसाय संचालन द्वारा समस्या का वर्णन कर सकते हैं, न कि आपके प्रस्तावित उत्परिवर्तनीय-सूची-आधारित समाधान के कार्यान्वयन विवरण से? –

उत्तर

15
var groupedList = orderedList 
    .GroupBy(c => new {c.CustomerId, c.ProductId}) 
    .OrderBy(g => g.Key.CustomerId) 
    .ThenBy(g => g.Key.ProductId) 
    .ToList(); 

foreach(var group in groupedList) 
{ 
    List<CustomerProduct> cps = group.ToList(); 
    //do some work with this customer products 

    //no need to do inefficient list removal - just move on to next group. 
} 
+0

यह पूरी तरह से काम करता है! thanx –

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