当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C#反射:从类型化数据集中获取DataRow的字段》经验,为你挑选了1个好方法。

我目前正在构建一个方法,该方法DataRow从类型化的DataSet 中获取类型的对象,然后返回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[])时,我得到的属性我不想被迭代:

alt text http://img88.imageshack.us/img88/2001/datarowreflectionht0.gif

你可以从上面的图片看,我只需要,范围从田野0 - 11props数组,因为这些都是这个特殊类型化的行的"真正的领域".

所以我的问题是,我怎样才能获得Typed DataRow的字段,而不是其他'元数据'?


[更新解决方案]

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

这是完成的功能:

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() + "}";
}

Mehrdad Afsh.. 11

你为什么不使用row.Table.Columns属性而不是反射?



1> Mehrdad Afsh..:

你为什么不使用row.Table.Columns属性而不是反射?

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有