在我们的测试应用程序中,我们首先从数据库获得我们的结果集,然后将它们转化成内存DataTable对象,从而为比较做准备。 TestDataTable类的构造函数接受一个数据库连接字符串和一个select查询。你还可以使用SetInputParameter函数设置输入参数。这个类的Table属性返回一个DataTable,它包含这个select查询的结果集。

  class TestDataTable

  {

  private readonly SqlCommand _command;

  public TestDataTable(String connstr, String selectQuery, CommandType commandType)

  {

  SqlConnection conn = new SqlConnection(connstr);

  _command = new SqlCommand(selectQuery, conn);

  _command.CommandType = commandType;

  }

  public void SetInputParameter(string parameterName, object parameterValue)

  {

  if (_command.Parameters.Contains(parameterName))

  _command.Parameters[parameterName] =

  new SqlParameter(parameterName, parameterValue);

  else

  _command.Parameters.AddWithValue(parameterName, parameterValue);

  }

  public DataTable Table

  {

  get

  {

  DataTable _dataTable = new DataTable();

  SqlDataAdapter da = new SqlDataAdapter(_command);

  da.Fill(_dataTable);

  da.Dispose();

  return _dataTable;

  }

  }

  }

  我们还需要一个类使用LINQ来比较两个DataTable对象,并将两个结果集间的差异写入在一个变量logFilePath中指定的文件中。ResultSetComparer类做这个工作。