我有两个具有相同表格的DataSet。
数据集1
DataSet2
两个表的“FullName”列都将表达式属性设置为
[Grade]+'-'+[Class]
对于DataSet2,我定义了一个方法 - “导入”。
// DataSet2.cs file
namespace ConsoleApplication1
{
public partial class DataSet2
{
public void Import(DataSet1 dataSet1)
{
this.Group.Load(dataSet1.Group.CreateDataReader());
}
}
}
下面的最后一行代码(dataSet2.Import(dataSet1);
)抛出了InvalidOperationException。
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataSet1 dataSet1 = new DataSet1();
dataSet1.Group.AddGroupRow(1, "A");
dataSet1.Group.AddGroupRow(1, "B");
DataSet2 dataSet2 = new DataSet2();
dataSet2.Import(dataSet1);
}
}
}
那是因为“FullName”列是计算列。我想知道如何在这种特殊情况下绕过此异常?是否可以在加载时使DataReader跳过计算列?或许还有其他一些“伎俩”?。
这是我在DataSets项目中的一个问题的复制品,其中有几个表格。
答案 0 :(得分:0)
您需要修改导入功能,如下所示
public void Import(DataSet1 dataSet1)
{
//this.Group.Load(dataSet1.Group.CreateDataReader());
foreach(var group in dataSet1.Group)
{
GroupRow g =this.Group.NewGroupRow();
g.Class = group.Class;
g.Grade = group.Grade;
this.Group.AddGroupRow(g);
}
}
因为用于导入所有列的加载函数,如果您有计算列,则无法使用。