[请帮助。有关于CsvHelper库的问题。我使用动态记录,并希望按原样传递双引号,或者将双引号更改为单引号可能更好。但是库始终会删除引用。
var csvHelperConfig = new Configuration();
var csv = new CsvReader(reader, csvHelperConfig);
var record = csv.GetRecord<dynamic>() as IDictionary<string, object>;
LANGUAGE,TITLE,CODE,UPDATED
"EN","English, English, English",1,"01.01.2000"
"DE","German",2,"01.01.2000"
谢谢您的回答!
不是很漂亮,但我相信它能满足您的要求。
public static void Main(string[] args)
{
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
using (StreamReader reader = new StreamReader(stream))
using (CsvReader csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
writer.WriteLine("LANGUAGE,TITLE,CODE,UPDATED");
writer.WriteLine("\"EN\",\"English, English, English\",1,\"01.01.2000\"");
writer.WriteLine("\"DE\",\"German\",2,\"01.01.2000\"");
writer.Flush();
stream.Position = 0;
var records = new List<dynamic>();
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var startIndex = 0;
dynamic dynamicObject = new ExpandoObject();
for (int i = 0; i < csv.Context.HeaderRecord.Length; i++)
{
var item = csv.GetField<string>(i);
var foundIndex = csv.Context.RawRecord.IndexOf(item, startIndex);
startIndex = foundIndex;
if (csv.Context.RawRecord[foundIndex - 1] == '"')
{
item = '"' + item + '"';
}
IDictionary<string, object> underlyingObject = dynamicObject;
underlyingObject.Add(csv.Context.HeaderRecord[i], item);
}
records.Add(dynamicObject);
}
}
}