有疑问希望有人可以提供帮助。
我有一个数据表dt1,它有三列a,b,c(数据类型为string,float,float resp)。 然后我有一个数据表dt2,它是dt1的克隆,dt1的值合并为dt2。
现在问题出在特定情况:
第一行是这样的:
dt1.Rows.Add("xyz", 0.0, 0.0);
但我可以看到该值在数据表中被视为xyz,0,0。 这个我和dt2合并为
if (dt2 == null)
{
dt2 = dt1.Clone();
}
dt2.Merge(dt1, true);
现在,当我第二次合并时说dt1中的某个值为(“mnp”,4.5,8.9)我在dt2.Merge(dt1, true);
错误:.b和.b有 冲突的属性:DataType 财产不匹配。
其中b是列名。
将表格dt1定义为:
DataTable dt1 = new DataTable();
dt1.Columns.Add("a", typeof(string));
dt1.Columns.Add("b", typeof(float));
dt1.Columns.Add("c", typeof(float));`
答案 0 :(得分:1)
Avi,以下代码在VS 2008中使用Target Frameworks 2.0,3.0和3.5运行时没有错误:
using System.Data;
namespace DtCheck
{
class Program
{
static void Main()
{
DataTable dt1 = new DataTable();
dt1.Columns.Add("a", typeof(string));
dt1.Columns.Add("b", typeof(float));
dt1.Columns.Add("c", typeof(float));
dt1.Rows.Add("xyz", 0.0, 0.0);
DataTable dt2;
dt2 = dt1.Clone();
dt2.Merge(dt1, true);
dt1.Rows.Add("mnp", 4.5, 8.9);
dt2.Merge(dt1, true);
}
}
}
你可以在你的机器上试试我的程序吗?结果是什么?如果它也有效,程序中的某些东西必须是不同的。
也许你在第二次合并之前将dt2重新分配给其他东西?或者它是否已设置为“if(dt2 == null)”,以便Clone()不执行?
顺便说一下:第一个克隆/合并可以减少到dt2 = dt1.Copy()
答案 1 :(得分:0)
如果你用“f”??
后缀它们怎么样? ("mnp",4.5f,8.9f)
我想也许他们被编译器解释为double而不是float。