我已经制作了一个创建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方法?
答案 0 :(得分:-1)
我建议将void
替换为FileStream
,
然后你将返回一个'System.IO.FileStream'对象,该对象可以包含所有类型(.CSV,但也包含Text或其他任何内容)。
在你调用方法的部分中,你只需按照你想要的方式解析/使用它:
FileStream objFile = ICreateNewCsv.CreateCsvForIndividuals(formattedPersons);