Skip to content

Instantly share code, notes, and snippets.

@binary4cat
Last active January 29, 2019 01:30
Show Gist options
  • Save binary4cat/c4bfa21e26d7b3a423cf69d52e28bb59 to your computer and use it in GitHub Desktop.
Save binary4cat/c4bfa21e26d7b3a423cf69d52e28bb59 to your computer and use it in GitHub Desktop.
动态创建c#类,以及在Csvhelper中创建动态的数据对象
// my pretend dataset
List<string> fields = new List<string>();
// my 'columns'
fields.Add("this_thing");
fields.Add("that_thing");
fields.Add("the_other");
dynamic exo = new System.Dynamic.ExpandoObject();
foreach (string field in fields)
{
((IDictionary<String, Object>)exo).Add(field, field + "_data");
}
// output - from Json.Net NuGet package
textBox1.Text = Newtonsoft.Json.JsonConvert.SerializeObject(exo);
// 在csv中使用动态创建
using (var memoryStream = new MemoryStream())
{
using (var writer = new StreamWriter(memoryStream, Encoding.UTF8))
using (var csv = new CsvWriter(writer))
{
// 动态展示的头部行数据
var con = Headers.ToList();
// 增加用户标识字段
var fields = new List<string>
{
"UserCode",
};
// 将模板的参数描述当作对象的字段
fields.AddRange(con);
// 动态组装对象
dynamic exo = new System.Dynamic.ExpandoObject();
foreach (string field in fields)
{
// 组装对象和值
((IDictionary<String, Object>)exo).Add(field, "");
}
csv.WriteRecord(exo);
}
// 返回流
return memoryStream.ToArray();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment