Csharp/C#教程:C#reflection:从类型化数据集中获取DataRow的字段分享


C#reflection:从类型化数据集中获取DataRow的字段

我目前正在构建一个方法,该方法从类型化的DataSet中获取DataRow类型的对象,然后返回DataRow中字段的JSON格式的字符串(用于Web服务)。

通过使用System.Reflection ,我正在做这样的事情:

 public string getJson(DataRow r) { Type controlType = r.GetType(); PropertyInfo[] props = controlType.GetProperties(); foreach (PropertyInfo controlProperty in props) { } return ""; } 

然后在foreach语句中,我将迭代每个字段并获取字段名称和值,并将其格式化为JSON。


问题是当迭代props (类型为PropertyInfo[] )时,我得到的属性我不想被迭代:

替代文字http://img88.imageshack.us/img88/2001/datarowreflectionht0.gif

从上图中可以看出,我只需要props数组中0 - 11的字段,因为这些是这个特定类型行的“真实字段”。

所以我的问题是, 如何只获取Typed DataRow的字段,而不是其他’元数据’?


[更新解决方案]

正如Mehrdad Afshari建议的那样,我使用的是Table.Columns数组,而不是使用Reflection

这是完成的function:

 public string GetJson(DataRow r) { int index = 0; StringBuilder json = new StringBuilder(); foreach (DataColumn item in r.Table.Columns) { json.Append(String.Format(""{0}" : "{1}"", item.ColumnName, r[item.ColumnName].ToString())); if (index < r.Table.Columns.Count - 1) { json.Append(", "); } index++; } return "{" + json.ToString() + "}"; } 

为什么不使用row.Table.Columns属性而不是reflection?

上述就是C#学习教程:C#reflection:从类型化数据集中获取DataRow的字段分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1000105.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐