private object GetMergedDataSourcesSection(string configKey, object originalSection)
    {
        var testDataSourcesSection = TestConfig.GetSection(configKey);

        //return original section if test config has no datasources section defined
        if (testDataSourcesSection == null)
        {
            return(originalSection);
        }

        var mergedDataSources = new DataSourceElementCollection();

        //copy test datasources
        foreach (DataSourceElement dataSource in ((TestConfigurationSection)testDataSourcesSection).DataSources)
        {
            mergedDataSources.Add(dataSource);
        }

        //merge datasources from original config
        if (originalSection != null)
        {
            foreach (DataSourceElement item in ((TestConfigurationSection)originalSection).DataSources)
            {
                if (!mergedDataSources.Cast <DataSourceElement>().Any(x => x.Name.Equals(item.Name, StringComparison.CurrentCultureIgnoreCase)))
                {
                    mergedDataSources.Add(item);
                }
            }
        }

        //create merged TestConfigurationSection
        TestConfigurationSection mergedDataSourcesSection = new TestConfigurationSection();

        foreach (DataSourceElement dataSource in mergedDataSources)
        {
            mergedDataSourcesSection.DataSources.Add(dataSource);
        }
        return(mergedDataSourcesSection);
    }
    private object GetMergedDataSourcesSection(string configKey, object originalSection)
    {
        var testDataSourcesSection = TestConfig.GetSection(configKey);

        //return original section if test config has no datasources section defined
        if (testDataSourcesSection == null)
        {
            return originalSection;
        }

        var mergedDataSources = new DataSourceElementCollection();

        //copy test datasources
        foreach (DataSourceElement dataSource in ((TestConfigurationSection)testDataSourcesSection).DataSources)
        {
            mergedDataSources.Add(dataSource);
        }

        //merge datasources from original config
        if (originalSection != null)
        {
            foreach (DataSourceElement item in ((TestConfigurationSection)originalSection).DataSources)
            {
                if (!mergedDataSources.Cast<DataSourceElement>().Any(x => x.Name.Equals(item.Name, StringComparison.CurrentCultureIgnoreCase)))
                {
                    mergedDataSources.Add(item);
                }
            }
        }

        //create merged TestConfigurationSection
        TestConfigurationSection mergedDataSourcesSection = new TestConfigurationSection();
        foreach (DataSourceElement dataSource in mergedDataSources)
        {
            mergedDataSourcesSection.DataSources.Add(dataSource);
        }
        return mergedDataSourcesSection;
    }