मैं एक सीएसवी फ़ाइल पार्स कर रहा हूं और डेटा को एक स्ट्रक्चर में रख रहा हूं। मैं this question से उपयोग कर रहा हूं और यह एक आकर्षण की तरह काम कर रहा है सिवाय इसके कि यह String[]
देता है। struct उन सभी क्षेत्रों ACCOUNTID एक int
जा रहा है के लिए छोड़कर जा रहा है String
रों के होते हैंस्ट्रिंग के साथ संरचना भरें []?
String[] row = parser.ReadFields();
DispatchCall call = new DispatchCall();
if (!int.TryParse(row[0], out call.AccountID)) {
Console.WriteLine("Invalid Row: " + parser.LineNumber);
continue;
}
call.WorkOrder = row[1];
call.Description = row[2];
call.Date = row[3];
call.RequestedDate = row[4];
call.EstStartDate = row[5];
call.CustomerID = row[6];
call.CustomerName = row[7];
call.Caller = row[8];
call.EquipmentID = row[9];
call.Item = row[10];
call.TerritoryDesc = row[11];
call.Technician = row[12];
call.BillCode = row[13];
call.CallType = row[14];
call.Priority = row[15];
call.Status = row[16];
call.Comment = row[17];
call.Street = row[18];
call.City = row[19];
call.State = row[20];
call.Zip = row[21];
call.EquipRemarks = row[22];
call.Contact = row[23];
call.ContactPhone = row[24];
call.Lat = row[25];
call.Lon = row[26];
call.FlagColor = row[27];
call.TextColor = row[28];
call.MarkerName = row[29];
: वर्तमान में मैं का बदसूरत प्रक्रिया है। यह मुझे परेशान करता है कि वे दृढ़ता से टाइप नहीं किए जाते हैं, लेकिन अब इसे देखने के लिए देखते हैं। यह देखते हुए कि parser.ReadFields()
String[]
लौटाता है, क्या संरचना को भरने के लिए एक और अधिक प्रभावी तरीका है (संभवतः row[0]
जैसे कुछ मानों को परिवर्तित करना int
बनने की आवश्यकता है) सरणी में मानों के साथ?
** संपादित करें: ** एक प्रतिबंध मुझे लगता है कि हो सकता है प्रभाव समाधान किस तरह काम करेंगे कि इस struct [Serializable]
है और कहीं और टीसीपी भेजा जाएगा उल्लेख करना भूल गया।
प्रतिबिंब का उपयोग करें। – Grozz
प्रतिबिंब निश्चित रूप से कम कुशल होगा, मैं बस इसके साथ रहूंगा क्योंकि – RobJohnson
सीएसवीहेल्पर आपके लिए बहुत उपयोगी हो सकता है https://github.com/JoshClose/CsvHelper/wiki/Basics – KeesDijk