C# 输入字符串的格式不正确
我这里有个小问题。当我尝试执行以下步骤时C# 输入字符串的格式不正确,c#,parsing,C#,Parsing,我这里有个小问题。当我尝试执行以下步骤时 string set1="123.10,134.40"; string set2="17,134"; List<string> List1 = new List<string>(set1.Split(',')); List<string> List2 = new List<string>(set2.Split(',')); var QueryResult = from D1 in List1
string set1="123.10,134.40";
string set2="17,134";
List<string> List1 = new List<string>(set1.Split(','));
List<string> List2 = new List<string>(set2.Split(','));
var QueryResult = from D1 in List1
from E1 in List2
select new
{
D1,
E1
};
DataTable tempDT = new DataTable();
tempDT.Columns.Add("Data1", typeof(int));
tempDT.Columns.Add("Data2", typeof(string));
foreach (var item in QueryResult)
{
tempDT.Rows.Add(new object[] {Convert.ToInt32(item.E1.ToString()),
Convert.ToString(item.D1.ToString()) });
}
string set1=“123.10134.40”;
字符串set2=“17134”;
List1=新列表(set1.Split(',');
List2=新列表(set2.Split(',');
var QueryResult=来自列表1中的D1
来自列表2中的E1
选择新的
{
D1,
E1
};
DataTable tempDT=新DataTable();
添加(“数据1”,类型(int));
添加(“数据2”,类型(字符串));
foreach(QueryResult中的var项)
{
Add(新对象[]{Convert.ToInt32(item.E1.ToString()),
Convert.ToString(item.D1.ToString())});
}
当我尝试将这些值添加到tempDT
时,我遇到了一个异常:
输入字符串的格式不正确
如何解决此问题?这是因为您正在对包含十进制字符的字符串使用Convert.ToInt32。您发布的代码工作正常,因此这意味着问题在于实际数据 最有可能的情况是,您有以下情况:
string set2="17,134,,20";
意味着空项将使代码崩溃
用以下方法移除此类空项:
List<string> List2 = new List<string>(set2.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries));
这将忽略任何无效值,而不是将它们添加到数据表中。这很可能来自
Convert.ToInt32
,那么item.E1
看起来像什么?它是一个可以转换成数字的字符串吗?整个堆栈跟踪是什么?而且E1和D1都已经是字符串,因此不需要调用ToString
。当您尝试将“item.E1”转换为Int 32时,“System.FormatException”的值是多少?user code Message=“Input string格式不正确”未处理。您不必对此提出疑问。我很确定这就是问题所在:)
int e1;
foreach (var item in QueryResult)
{
if (Int32.TryParse(item.E1, out e1))
{
tempDT.Rows.Add(new object[] { e1, item.D1 });
}
}