सी # में डेटा के आधार पर तालिका पंक्तियों को गतिशील रूप से कॉलम में बदलने में मदद चाहिए।

enter image description here

अपेक्षित परिणाम इस प्रकार है,

          Attribute                 10 min              20 min      30 min
          Component A Test           5                  8            10
          Component B Test           6                  9            11
          Component C Test           7                  9            12

          Attribute      Right #    Left #
          Component A       5J      7C
          Component B       6J      8C

          Component X   ZZJ
          Component Y   ZZK
-3
Satish 5 मार्च 2020, 12:32
2
SQL PIVOT/UNPIVOT आपका सबसे अच्छा दांव है, हालांकि C# से इसका कोई लेना-देना नहीं है...c-sharpcorner.com/UploadFile/f0b2ed/…
 – 
Charleh
5 मार्च 2020, 12:34
ऐसा लगता है कि आपको अपने कॉलम Attribute को भी विभाजित करना होगा, क्योंकि यह 1 से अधिक जानकारी संग्रहीत कर रहा है। आदर्श रूप से आपको अपना डेटा सामान्य करना चाहिए।
 – 
Larnu
5 मार्च 2020, 12:43
मैं PIVOT और UNPIVOT का उपयोग नहीं करने का प्रयास कर रहा हूं, सी # में कार्य करने के लिए अतिरिक्त कॉलम जोड़ना चाहता हूं।
 – 
Satish
5 मार्च 2020, 12:44

2 जवाब

TypeBuilder , FieldBuilder https:/ /docs.microsoft.com/en-us/dotnet/api/system.reflection.emit.typebuilder?view=netframework-4.8 आपको क्लास और फिर उसके ऑब्जेक्ट बनाने में मदद करेगा जिनकी प्रॉपर्टी आप रन टाइम पर परिभाषित कर सकते हैं। इसे समझने में थोड़ा समय लग सकता है लेकिन यह आपकी समस्या का समाधान कर देगा।

1
knowdotnet 5 मार्च 2020, 13:05

आपको स्ट्रिंग को विभाजित करना होगा और आंशिक मूल्य की जांच करनी होगी ताकि आपका कोड पुन: प्रयोज्य न हो यदि आपको अलग से समय कॉलम मिलता है तो यह बहुत आसान होगा। यदि आवश्यक हो तो आप परिणामों का योग कर सकते हैं।

 public class Row
    {
        public int Id { get; set; } 
        public string Attribute { get; set; } 
        public int Value { get; set; }
    }


    public class Col
    {
        public int Id { get; set; } 
        public string Attribute { get; set; } 
        public int _10_Mins { get; set; } 
        public int _20_Mins { get; set; } 
        public int _30_Mins { get; set; } 
    }

    class Program
    {


        static void Main(string[] args)
        {

            List<Row> rows = new List<Row>(); 

            List<Col> list = rows.Select(r => new Col()
            {
               Id = r.Id,
               Attribute = r.Attribute.Split('@')[0],
                 _10_Mins = rows.FirstOrDefault(c => c.Attribute == r.Attribute && c.Attribute.EndsWith("10 min")).Value,
                 _20_Mins = rows.FirstOrDefault(c => c.Attribute == r.Attribute && c.Attribute.EndsWith("20 min")).Value,
                 _30_Mins = rows.FirstOrDefault(c => c.Attribute == r.Attribute && c.Attribute.EndsWith("30 min")).Value, 
            }).ToList();  
        }

    }
0
Alexander 5 मार्च 2020, 13:36
आपके मूल्यवान इनपुट के लिए धन्यवाद अलेक्जेंडर, अतिरिक्त समय शीर्षलेख लेकिन यह अभी भी कई रिकॉर्ड दिखाता है। अपना कोड अपडेट किया।
 – 
Satish
5 मार्च 2020, 17:19