【发布时间】:2016-04-06 09:17:17
【问题描述】:
我已经创建了一个创建 csv 文件的方法。出于测试目的,我将文件保存在文件系统上,但我不想这样做。
这是我的代码:
void ICreateNewCsv.CreateCsvForIndividuals(List<FormattedPerson> formattedPersons)
{
//var CsvFilePath = "C:\\temp\\individuals.csv";
var csv = new StringBuilder();
var toExclude = new HashSet<string>
{
"ID",
"SubSystemID",
"System",
"Component"
};
var props = typeof (FormattedPerson).GetProperties(BindingFlags.Public | BindingFlags.Instance).
Where(property => !toExclude.Contains(property.Name));
var header = string.Join(", ", props.Select(p => p.Name.ToString()).ToArray());
csv.AppendLine(header);
for (var i = 0; i < formattedPersons.Count; i++)
{
var personTexts = formattedPersons
.Select(p => string.Join(",", p.Surname, p.FirstName, p.MiddleName, p.DateOfBirth,
p.NationalID, p.Gender, p.Address1, p.Address2, p.Address3,
p.City, p.Country, p.PostalCode, p.UniqueID));
var joined = string.Join(Environment.NewLine, personTexts);
csv.AppendLine(joined);
}
//File.AppendAllText(CsvFilePath, csv.ToString());
}
有没有办法返回 csv 文件而不是仅仅使用 void 方法?
【问题讨论】:
-
用
string和return csv.ToString();替换void -
嗯,你想返回什么?文件的内容?指向文件的指针?
-
这看起来像是相当糟糕的 CSV 转换。当您发现您的数据中已经包含逗号时会发生什么?
-
@nemo_87:“返回文件”是什么意思?你想要它的位置(路径)吗?还是它的内容?
-
@nemo_87:文件只是存储在文件系统中的数据。您提到的微服务要么直接接受数据,要么想从文件中读取数据。在第一种情况下,您只需将数据 (
return csv.ToString()) 传递给它,无需创建文件。在第二种情况下,您创建一个文件并将其位置(路径或 url)传递给微服务,然后微服务继续读取该文件以获取数据。