protected override void BuildTable(GlobalizationCurrencyInfo[] globalizationInfo, CurrencyInfo[] configurationInfo) { var configurationMap = configurationInfo.ToDictionary(i => i.Code, Currency.Code.Comparer); var cmp = new AlphaComparer(); foreach (var group in globalizationInfo.GroupBy(i => i.Info.Code).OrderBy(g => g.Key, cmp)) { GlobalizationCurrencyInfo[] fromGlobalization = group.OrderBy(i => i.Culture.Name, StringComparer.Ordinal).ToArray(); if (fromGlobalization.Length > 1) { CurrencyInfo fromConfiguration = configurationMap[group.Key]; Enumeration.TryGetAttribute(fromConfiguration.Code, out CanonicalCultureAttribute canonicalAttr); CultureInfo canonicalCulture = canonicalAttr?.Culture(); if (canonicalCulture != null) { string canonicalColumn = FormatCultureColumn(canonicalCulture, canonicalAttr.Overwritten); AddRow(group.Key, canonicalColumn, string.Empty, string.Empty); foreach (var notCanonical in fromGlobalization.Where(i => !i.Culture.Equals(canonicalCulture))) { string notCanonicalColumn = FormatCultureColumn(notCanonical.Culture); string equalityColumn = notCanonical.Equals(fromConfiguration) ? "=" : "!="; AddRow(string.Empty, string.Empty, notCanonicalColumn, equalityColumn); } } } } }
protected override void BuildTable(GlobalizationCurrencyInfo[] globalizationInfo, CurrencyInfo[] configurationInfo) { var notDecorated = configurationInfo .Where(i => !Enumeration.HasAttribute <CurrencyIsoCode, CanonicalCultureAttribute>(i.Code)) .ToArray(); var cmp = new AlphaComparer(); foreach (var fromConfiguration in notDecorated.OrderBy(i => i.Code, cmp)) { var fromGlobalization = globalizationInfo.Where(i => Currency.Code.Comparer.Equals(i.Info.Code, fromConfiguration.Code)).ToArray(); for (int i = 0; i < fromGlobalization.Length; i++) { if (i == 0) { AddRow(fromConfiguration.Code, string.Empty); } string fromGlobalizationColumn = FormatCultureColumn(fromGlobalization[i].Culture); AddRow(string.Empty, fromGlobalizationColumn); } } }