Лучший алгоритм C #, чтобы сделать один набор данных равным другому? - PullRequest
2 голосов
/ 15 ноября 2011

Вот наша проблема:

У нас есть текущий набор данных, к которому привязан наш пользовательский интерфейс (20 таблиц, тысячи строк на таблицу). Обычно мы используем собственную реализацию PubSub для применения дополнительных изменений от других участников нашего бизнес-процесса (клиентов и серверов). Из-за старых привычек наших клиентов и некоторых проблем с надежностью нашего PubSub некоторые наши клиенты настаивают на нажатии нашей кнопки hard refresh .

Эта кнопка получает полную копию данных и очищает существующий набор данных (# 1) и объединяет новый набор данных (# 2), фактически делая набор данных # 1 идентичным # 2. Наш алгоритм merge довольно прост:

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);
    }
}

как видите, я заметил, что мы должны разработать настоящий алгоритм слияния. Но в то время, наши клиенты приняли побочные эффекты для компромисса производительности. Или так мы думали. В любом случае, основным побочным эффектом является то, что любая сетка данных (Infragistics), связанная с нашими данными, сбрасывается, поэтому вся раскрытая / свернутая информация теряется, выбирается и т. Д.

Так, кто-нибудь может порекомендовать стороннюю библиотеку, которая уже делает что-то подобное? если нет, какие-либо рекомендации относительно того, как приступить к осуществлению? Если мы добьемся успеха, я обязательно опубликую результаты здесь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...