public AppConfigCollection FindValues(AppConfigVersion version, params string[] names)
        {
            IEnumerable <AppConfigParameter> enumerable = this.Find(version, names);
            AppConfigCollection appConfigCollection     = new AppConfigCollection();

            foreach (AppConfigParameter appConfigParameter in enumerable)
            {
                appConfigCollection.Add(appConfigParameter.Name, appConfigParameter.Value);
            }
            return(appConfigCollection);
        }
        public IEnumerable <AppConfigParameter> Find(AppConfigVersion version, params string[] names)
        {
            ComparisonFilter comparisonFilter = new ComparisonFilter(ComparisonOperator.Equal, AppConfigSchema.ParamVersionProp, version.ToInt64());

            IConfigurable[] source;
            if (names == null || names.Length == 0)
            {
                source = this.DataProvider.Find <AppConfigSchema.AppConfigByVersion>(comparisonFilter, null, false, null);
            }
            else
            {
                HashSet <string> hashSet = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                for (int i = 0; i < names.Length; i++)
                {
                    string text = names[i];
                    if (text == null)
                    {
                        throw new ArgumentNullException("names", string.Format("Parameter name at index {0} is null.", i));
                    }
                    if (text.Length > 255)
                    {
                        throw new ArgumentOutOfRangeException("names", string.Format("Parameter name at index {0} is too long.", i));
                    }
                    if (!hashSet.Add(text))
                    {
                        throw new ArgumentException(string.Format("Duplicate parameter name is found at index {0}.", i), "names");
                    }
                }
                DataTable dataTable = new DataTable();
                dataTable.TableName = "AppConfigNamesTableType";
                dataTable.Columns.Add("nvc_ParamNames", typeof(string));
                for (int j = 0; j < names.Length; j++)
                {
                    dataTable.Rows.Add(new object[]
                    {
                        names[j]
                    });
                }
                ComparisonFilter comparisonFilter2 = new ComparisonFilter(ComparisonOperator.Equal, AppConfigSchema.ParamNamesTableProp, dataTable);
                source = this.DataProvider.Find <AppConfigSchema.AppConfigByName>(new AndFilter(new QueryFilter[]
                {
                    comparisonFilter,
                    comparisonFilter2
                }), null, false, null);
            }
            return(source.Cast <AppConfigParameter>());
        }