leo*_*ora 18 c# linq csv generics list
如果我有一个名为"Car"的对象列表:
public class Car
{
public string Name;
public int Year;
public string Model;
}
Run Code Online (Sandbox Code Playgroud)
如何将对象列表转换为例如List <Car>到csv?
将以下方法添加到Car:
String Escape(String s)
{
StringBuilder sb = new StringBuilder();
bool needQuotes = false;
foreach (char c in s.ToArray())
{
switch (c)
{
case '"': sb.Append("\\\""); needQuotes = true; break;
case ' ': sb.Append(" "); needQuotes = true; break;
case ',': sb.Append(","); needQuotes = true; break;
case '\t': sb.Append("\\t"); needQuotes = true; break;
case '\n': sb.Append("\\n"); needQuotes = true; break;
default: sb.Append(c); break;
}
}
if (needQuotes)
return "\"" + sb.ToString() + "\"";
else
return sb.ToString();
}
public void SerializeAsCsv(Stream stream)
{
stream.Write(Escape(Name));
stream.Write(",");
stream.Write(Year.ToString());
stream.Write(",");
stream.Write(Escape(Model));
stream.Write("\n");
}
Run Code Online (Sandbox Code Playgroud)
现在您可以序列化整个列表:
foreach (Car car in list)
{
car.SerializeAsCsv(stream);
}
Run Code Online (Sandbox Code Playgroud)
查看FileHelpers库.
从网站:
The FileHelpers are a free and easy to use .NET library to import/export data from fixed length or delimited records in files, strings or streams.
根据RFC-4180,这将确保线路终止,转义等各种问题得到正确处理.
归档时间: |
|
查看次数: |
22156 次 |
最近记录: |