使用C#中的select from csv文件的值错误

本文关键字:文件 错误 csv from 中的 select 使用 | 更新日期: 2023-09-27 18:29:08

我有一个csv文件,其中存储了一些行,如:

code      --name    --req   --country
VS161A0166--ÁO KHOÁC--S79095--VIETNAM
VS161A0240--ÁO THUN --S79096--VIETNAM

Im使用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

我该怎么修?感谢的帮助

使用C#中的select from csv文件的值错误

所以,这看起来很奇怪,但这里有一个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;}
}