मेरे पास ऑब्जेक्ट की एक सूची है जिसमें दो गुण हैं, मान लें a
और b
। a
एक Enum की तरह है:LINQ - समूह कई समूहों में आइटम के साथ
[Flags] enum MyEnum
{
first = 1,
second = 2,
third = 4,
fourth = 8
};
b
एक अहस्ताक्षरित पूर्णांक है, जो एक मुखौटा (MyEnum झंडे के संयोजन) है। एक वस्तु जिसका अर्थ है दो बार अगर obj.a = first | third
अभिव्यक्त किया जा सकता है और मैं उन्हें करने के लिए एक groupBy
करने के लिए नहीं कर पा रहे -
अब मैं द्वारा हर वस्तु योग करने के लिए उनके a
की जरूरत है। क्या उन्हें योग करने का एक अलग तरीका है?
मुझे खेद है कि मैं अपना कोड साझा नहीं करता, लेकिन मैं नहीं कर सकता। मैं आपको बता सकता है मैं इसे में foreach का उपयोग कर बस कुछ करता है, तो था - को अवरोधित कर देते लेकिन मुझे लगता है कि मैं कैसे Linq
में यह करने के लिएसंपादित सीखना चाहिए: मुझे लगता है कि मैं स्पष्ट नहीं था। मैं Enum द्वारा वस्तु योग करने के लिए चाहते हैं, जिसका अर्थ है यदि मेरे पास है:
obj1.a = first, obj1.b = 5
obj2.a = first | second, obj2.b = 3
तो उत्पादन होगा
first sum = 8
second sum = 3
(एक डबल
from
एकSelectMany
को संकलक द्वारा परिवर्तित किया जाता है) आप सकता है ने सुझाव दिया शायदSelectMany
का उपयोग करने पर है अपेक्षित परिणाम प्रदान करें? आपका प्रश्न वास्तव में मुझे स्पष्ट नहीं है –आपकी समस्या अभी भी स्पष्ट नहीं है। क्या होगा यदि हमारे पास 'obj3 = first | है दूसरा | तीसरा; 'रकम क्या हैं? वे हो सकता है 'पहले योग = 15',' दूसरा योग = 8', 'तीसरे योग = 3',' चौथे योग = 7', 'पांचवें योग = 8',' छठे योग = 14'? –
@किंगकिंग बिल्कुल। मैं enum मानों द्वारा योग करता हूं, इसलिए अगर किसी ऑब्जेक्ट में पहले स्थान पर है। दूसरा | तीसरा और 3 मान फ़ील्ड में 3 तो पहले, दूसरे और तीसरे –