Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更好的C#算法使一个数据集与另一个数据集相等?_C#_Algorithm_Dataset - Fatal编程技术网

更好的C#算法使一个数据集与另一个数据集相等?

更好的C#算法使一个数据集与另一个数据集相等?,c#,algorithm,dataset,C#,Algorithm,Dataset,这是我们的问题: 我们有一个UI绑定到的当前数据集(20个表,每个表数千行)。通常,我们使用自定义PubSub实现来应用业务流程中其他参与者(客户机和服务器)的增量更改。由于我们客户的旧习惯和PubSub的一些可靠性问题,我们的一些客户坚持按我们的硬刷新按钮 该按钮获取数据的完整副本,并清除现有数据集(#1)并合并新数据集(#2),有效地使数据集#1与#2相同。我们的合并算法相当简单: public static void MergeDataSets(ref DataSet original,

这是我们的问题:

我们有一个UI绑定到的当前数据集(20个表,每个表数千行)。通常,我们使用自定义PubSub实现来应用业务流程中其他参与者(客户机和服务器)的增量更改。由于我们客户的旧习惯和PubSub的一些可靠性问题,我们的一些客户坚持按我们的硬刷新按钮

该按钮获取数据的完整副本,并清除现有数据集(#1)并合并新数据集(#2),有效地使数据集#1与#2相同。我们的合并算法相当简单:

public static void MergeDataSets(ref DataSet original, DataSet updated)
{
    if (null == updated)
    {
        return;
    }
    if(null == original)
    {
        original = updated.Copy();
    }
    else
    {
        // TODO: ELI: it would be nice to have an actual merge algorithm to publish changes from updated to original.
        original.Clear();
        original.Merge(updated, false, MissingSchemaAction.Add);
    }
}
正如你所看到的,我确实注意到我们应该设计一个真正的合并算法。但当时,我们的客户接受了性能权衡的副作用。至少我们是这么想的。无论如何,主要的副作用是绑定到我们的数据的任何数据网格(基础设施)都会被重置,因此所有扩展/折叠的信息都会丢失,选择等等


那么,有人能推荐一个已经做了类似工作的第三方库吗?若否,有何建议如何落实??如果我们真的成功了,我一定会把结果发布在这里…

IIRC,数据集支持diffgram-这些有什么帮助吗看,我会查出来,但大多数文章似乎都涉及“合并”2个数据集。。。我们试图做的不是真正的合并。我们希望数据集#1与数据集#2等效。所以基本上,我们需要找到所有的差异,然后将它们应用到数据集#1。我们拭目以待。编辑们,请在编辑之前阅读并充分理解问题!!!!将标题改为“合并”是错误的,这表明您甚至懒得阅读完整的问题。这不是一场比赛,因为你编辑了一些东西。谢谢。合并目前是如何工作的?当远程更改和当前更改都不同于base.IIRC时,合并冲突会发生什么情况?数据集支持diffgram-这些有什么帮助吗看,我会查出来,但大多数文章似乎都涉及“合并”2个数据集。。。我们试图做的不是真正的合并。我们希望数据集#1与数据集#2等效。所以基本上,我们需要找到所有的差异,然后将它们应用到数据集#1。我们拭目以待。编辑们,请在编辑之前阅读并充分理解问题!!!!将标题改为“合并”是错误的,这表明您甚至懒得阅读完整的问题。这不是一场比赛,因为你编辑了一些东西。谢谢。合并目前是如何工作的?当远程更改和当前更改与基本更改不同时,合并冲突会发生什么情况。