2019 और C# के साथ विजुअल स्टूडियो

मेरे पास इस प्रारूप में डेटा के साथ एक फ्लैट फ़ाइल है:

CustomerName<tab>CustomerAddress<tab>CustomerEmail<tab>CustomerPhone etc....
Tom<tab>123 Chestnut Street, NY, NY 10001<tab>Tom@gmail.com<tab>212-555-1212
Dick<tab>234 Oak Street, LA, CA 91210<tab>Dick@gmail.com<tab>747-555-1212
Harry<tab>789 Maple Drive, Reno, NV 89508<tab>Harry@yahoo.com<tab>775-555-1212
etc...

हमें दी गई ग्राहक फ़ाइल के आधार पर कॉलम लगभग 5 से 15 कॉलम तक भिन्न हो सकते हैं।

हमारे उपयोगकर्ता डेटा की 1 से 50 नमूना पंक्तियों में से कहीं भी, डेटा के नमूने का पूर्वावलोकन करने में सक्षम होना चाहते हैं। हालाँकि वे पृष्ठ पर पिवट किए गए डेटा को देखने पर जोर देते हैं:

Column1                  Column2             Column3              etc...
Tom                      Dick                Harry
123 Chestnut Street...   234 Oak Street...   789 Maple Drive...
Tom@gmail.com            Dick@gmail.com      Harry@yahoo.com
212-555-1212             747-555-1212        775-555-1212
etc...

इस उद्देश्य के लिए मेरे पास यह विशेष ग्राहक वर्ग है:

public class Customer {
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; } 
//etc.... to 50 columns
}

लेकिन मुझे इसे कोड करने के लिए एक शानदार तरीके से आने में कठिनाई हो रही है। अगर मैं डेटा को सिस्टम में प्राप्त कर सकता हूं। डेटा। डेटाटेबल उस पिवोटेड फॉर्म में, मैं इसे आसानी से एक HTML तालिका में प्राप्त कर सकता हूं। डेटा की पंक्तियों के माध्यम से इसे कक्षा में लाने के बारे में कोई विचार? सुनिश्चित नहीं है कि उपयोग करने के लिए सर्वोत्तम मध्यवर्ती वर्ग क्या हैं। मैं इस तरह कुछ हार्ड कोड नहीं करना चाहता:

...
for (int i = 0; i < columnCount; i++) {
  Customer c = new Customer();
  c.Column1 = row1[i].ToString();  
  c.Column2 = row2[i].ToString();  
  c.Column3 = row3[i].ToString();  
//etc...
}
c#
0
BarnumBailey 4 अक्टूबर 2021, 16:12

1 उत्तर

सबसे बढ़िया उत्तर

मेरा दृष्टिकोण थोड़ा अलग होगा, और आपके द्वारा बनाई गई डेटा संरचना से अलग होगा। मैं इसके बजाय फ्लैट फ़ाइल पंक्तियों को स्ट्रिंग्स की एक सरणी वाली सरणी ऑब्जेक्ट्स में deserialize कर दूंगा। इस तरह मुझे कुछ भी हार्ड-कोड नहीं करना है और मेरी "पंक्ति गणना" और मेरी ऑब्जेक्ट डेटा गुण लंबाई गतिशील है।

// this is for a row's data
public class RowObject
{
    public List<string> RowObjectProperty;
    public RowObject()
    {
        RowObjectProperty = new List<string>();
    }
}


// ===================================================================
// ... somewhere in a class which deserializes the flat file

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

// ...read data into the rows....

// ...print out the data for each row as your columns
foreach (RowObject customer in rows)
{
    foreach (string customerProperty in customer)
    {
        // here is each customer property (name, email, phone, etc)
        // ... create your column for this customer here     ​
   ​}
}
// ===================================================================

यह थोड़ा प्रारंभिक है, लेकिन मुझे लगता है कि आपको बेहतर दिशा में ले जाना चाहिए। अब, यदि आप पहले से ही जानते हैं कि डेटा संरचना (ग्राहक डेटा) में विशिष्ट और संगत डेटा फ़ील्ड/प्रकार होंगे, तो मैं यहां सुझाई गई फ़्लैट फ़ाइल को पार्स करूंगा: https://stackoverflow.com/a/18479420/1188197

0
EspressoBeans 4 अक्टूबर 2021, 23:27
1
मैं आपके सुझाव के अनुसार तर्क पर फिर से काम कर रहा हूं, मुझे लगता है कि सरणी दृष्टिकोण सबसे अच्छा है क्योंकि मुझे डेटा संरचना नहीं पता है। धन्यवाद। :)
 – 
THedge
6 अक्टूबर 2021, 22:13