c# - Order list by value with maximum sequence appearance -
मेरे पास निम्न सूची है (सरलीकृत):
नाम | ब्रांड शर्ट0 | एडिडास शर्ट 1 | नाइकी शर्ट 2 | एडिडास शर्ट 3 | एडिडास शर्ट 4 | एरिमा शर्ट 5 | नाइकी
मैं इसे ब्रांड द्वारा आदेश देना चाहता हूं, और क्रम में एक ब्रांड के दो (अधिकतम) प्रदर्शित करता हूं
इसलिए मैं पहले सभी 3 एडिडास उत्पादों को प्रदर्शित नहीं करता, लेकिन केवल दो!
परिणाम:
Shirt0 | एडिडास शर्ट 2 | एडिडास शर्ट 1 | नाइके शर्ट 5 | नाइके शर्ट 4 | एरिमा शर्ट 3 | एडीडास
इसलिए यह प्रत्येक ब्रांड के दो उत्पादों को लेता है, और जब कोई और उपलब्ध नहीं होता है तब से शुरू होता है।
कोई भी विचार LINQ के साथ कैसे प्राप्त करना है?
< / Div>
मुझे लगता है कि आपके उत्पाद
वर्ग में निम्न गुण की तरह कुछ है:
सार्वजनिक स्ट्रिंग ब्रांड {प्राप्त करें; }
मैं निम्नलिखित दृष्टिकोण का प्रयोग करूंगा:
-
ब्रांड
संपत्ति - उत्पादों को समूह से लपेटें प्रत्येक समूह में अतिरिक्त
आदेश
संपत्ति के साथ गुमनाम कक्षा में परिणाम दें और अगर यह समूहीकरण के भीतर का सूचक 2 और 1 से कम है, यदि अन्य (पहली और दूसरी वस्तु के लिए आवेदन करेंगे) - हमारे अनाम वर्ग की
आदेश
संपत्ति के आधार पर आदेश को लागू करें - उत्पाद का चयन करें, इसलिए हम अपने अनाम आवरण वर्ग से छुटकारा पाएं
नीचे दिए गए प्रश्न:
var परिणाम = सूची .GroupBy (x = & gt; x.brand)। चयन करें (g = & gt; g.Select ((x, i) = & Gt; नया {ऑर्डर = i & lt; 2? 0: 1, उत्पाद = x})। ओर्डरबी (x = & gt; x.Order)। चयन करें (x = & gt; x.Product) .ओलिस्ट ();
मुझे लगता है कि एक बेहतर दृष्टिकोण हो सकता है, लेकिन यह एक सिर से सीधे है।
Comments
Post a Comment