我正在解析CSV文件並將數據放入結構中。我使用中的TextFieldParser
,它的工作方式類似於魅力,但它返回String[]
。目前,我有醜陋的過程:用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];
的結構包括所有這些領域是除了帳戶ID作爲一個int
String
S的。它讓我很惱火,他們不是很強類型的,但現在讓我們來看看。假設parser.ReadFields()
返回一個String[]
是否有一種更有效的方法來填充一個結構(可能將一些值,如row[0]
需要成爲int
)與數組中的值?
**編輯:**一個限制我忘了提,可能影響什麼樣的解決方案,將工作是,這個結構是[Serializable]
,將被髮送的TCP別處。
使用反射。 – Grozz 2012-08-17 15:57:38
反射肯定會效率較低,我只是住在它的 – RobJohnson 2012-08-17 16:01:22
CsvHelper可能會對你很有幫助https://github.com/JoshClose/CsvHelper/wiki/Basics – KeesDijk 2012-08-17 16:01:38