سؤال

أنا حاليا بناء الأسلوب الذي يأخذ كائن من نوع DataRow من كتابة البيانات ، ومن ثم العودة الى سلسلة في سلمان تنسيق الحقول في DataRow (للاستخدام في خدمة ويب).

باستخدام 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

كما ترون من الصورة أعلاه, أحتاج فقط إلى الحقول التي تتراوح من 0 - 11 في props مجموعة, لأن تلك هي الحقيقية الميادين' هذا كتبته الصف.

لذا سؤالي هو ، كيف يمكنني الحصول على حقول كتبته DataRow فقط, وليس غيرها 'الفوقية' ?


[تحديث مع الحل]

كما مهرداد افشري واقترح بدلا من استخدام 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() + "}";
}
هل كانت مفيدة؟

المحلول

لماذا لا تستخدم row.Table.Columns الملكية بدلا من التفكير ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top