我有一个csv文件,可存储一些行,如:
code --name --req --country
VS161A0166--ÁO KHOÁC--S79095--VIETNAM
VS161A0240--ÁO THUN --S79096--VIETNAM
我使用Odbc连接和检索c#
中的数据string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:;Extensions=asc,csv,tab,txt;Persist Security Info=False;HDR=NO;IMEX=1";
string sql_select;
System.Data.Odbc.OdbcConnection conn;
conn = new System.Data.Odbc.OdbcConnection(strConnString.Trim());
conn.Open();
sql_select = "select * from [test.csv]";
obj_oledb_da = new System.Data.Odbc.OdbcDataAdapter(sql_select, conn);
obj_oledb_da.Fill(ds);
conn.Close();
但我得到了意想不到的价值
VS161A0166--ÁO KHOÁC--79095.000--VIETNAM
VS161A0240--ÁO THUN --79096.000--VIETNAM
我该如何解决?谢谢你的帮助
答案 0 :(得分:0)
所以,这看起来很奇怪,但这里是C#中一个引用VisualBasic命名空间的解决方案。我知道,奇怪。
using Microsoft.VisualBasic.FileIO;
public List<MyVal> GetValues() {
var path = "path/to/file";
var list = new List<MyVal>();
using(var csvReader = new TextFieldParser(path)) {
csvReader.TextFieldType = FileIO.FieldType.Delimited;
csvReader.SetDelimiters("--");
while(!csvReader.EndOfData) {
var currentRow = csvReader.ReadField();
if(csvReader.LineNumber != 1)
list.Add(new MyPoco() { Code = currentRow[0], Name = currentRow[1], Req = currentRow[2], Country = currentRow[3]});
}
}
}
return list;
}
将此作为MyPoco类使用:
public class MyPoco {
public string Code {get;set;}
public string Name {get;set;}
public string Req {get;set;}
public string Country {get;set;}
}