Last active
January 29, 2019 01:30
-
-
Save binary4cat/c4bfa21e26d7b3a423cf69d52e28bb59 to your computer and use it in GitHub Desktop.
动态创建c#类,以及在Csvhelper中创建动态的数据对象
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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