C# التفكير:الحصول على مجالات DataRow من كتابة البيانات
-
08-07-2019 - |
سؤال
أنا حاليا بناء الأسلوب الذي يأخذ كائن من نوع 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
الملكية بدلا من التفكير ؟