我的目标是这些。如何将2D字符串数组转换为2D [int,double,bool,..]数组?
- 将数据类转换为字典。
- 保存/那本字典/从TXT,数据库负载等
- 转换字典数据类
我想我解决了alomost,但一个问题仍然remail。
问题是将2d字符串数组转换为2d它是原始数据类型数组。
我已成功将字符串转换为原始数据类型。 这样
public static void SetFieldValue(Object target, FieldInfo fieldInfo, string value)
{
string fieldType = fieldInfo.FieldType.Name;
fieldType = fieldType.ToLower();
switch (fieldType)
{
case "boolean":
bool b;
fieldInfo.SetValue(target, bool.TryParse(value, out b) ? b : false);
break;
case "int32":
int n;
fieldInfo.SetValue(target, int.TryParse(value, out n) ? n : 0);
break;
case "double":
double d;
fieldInfo.SetValue(target, double.TryParse(value, out d) ? d : 0);
break;
case "string":
fieldInfo.SetValue(target, value);
break;
}
}
我已经成功转换1D字符串数组到1d原始数据类型的数组。 这样的
public static void SetFieldValue(Object target, FieldInfo fieldInfo, string[] arr)
{
string fieldType = fieldInfo.FieldType.Name;
fieldType = fieldType.ToLower();
fieldType = fieldType.Replace("[]", "");
switch (fieldType)
{
case "boolean":
bool b;
bool[] arr_b = Array.ConvertAll(arr, s => bool.TryParse(s, out b) ? b : false);
fieldInfo.SetValue(target, arr_b);
break;
case "int32":
int n;
int[] arr_n = Array.ConvertAll(arr, s => int.TryParse(s, out n) ? n : 0);
//int[] arr_n1 = Array.ConvertAll(arr, int.Parse);
//int[] arr_n2 = arr.Select(s => int.TryParse(s, out n) ? n : 0).ToArray();
fieldInfo.SetValue(target, arr_n);
break;
case "double":
double d;
double[] arr_d = Array.ConvertAll(arr, s => double.TryParse(s, out d) ? d : 0);
fieldInfo.SetValue(target, arr_d);
break;
case "string":
fieldInfo.SetValue(target, arr);
break;
}
}
但是,当处理二维数组时,应该怎么办?
public static void SetFieldValue(Object target, FieldInfo fieldInfo, string[,] arr)
{
string fieldType = fieldInfo.FieldType.Name;
fieldType = fieldType.ToLower();
fieldType = fieldType.Replace("[,]", "");
int n;
double d;
bool b;
switch (fieldType)
{
case "boolean":
//bool[] arr_b = Array.ConvertAll(arr, s => bool.TryParse(s, out b) ? b : false);
//fieldInfo.SetValue(target, arr_b);
break;
case "int32":
//int[,] arr_n = Array.ConvertAll(arr, s => int.TryParse(s, out n) ? n : 0);
//fieldInfo.SetValue(target, arr_n);
break;
case "double":
//double[,] arr_d = Array.ConvertAll(arr, s => double.TryParse(s, out d) ? d : 0);
//fieldInfo.SetValue(target, arr_d);
break;
case "string":
fieldInfo.SetValue(target, arr);
break;
}
}
和,我需要解决这个问题是因为我无法获取GetType()。GetField的数组位置。我放弃了获取数组[行,列]的数组[第n,m_th]的GetField。
谢谢,但我的问题不是ToStringArray,而是FromStringArray。 – yeminfa