public static IEnumerable<MappingElement> ToMappingElements(this IEnumerable<string> items, MappingSourceEntry mappingSource) { return items.Select(x => new MappingElement { Key = x, Value = mappingSource.TpItems .FirstOrDefault(y => x.Equals(y.Name, StringComparison.OrdinalIgnoreCase)) }); }
private static MappingContainer GetMappingFor(MappingSourceEntry source, IEnumerable<MappingElement> mapped) { var elements = new List<MappingElement>(); IEnumerable<string> thirdPartyItems = source.ThirdPartyItems; var existingMappingElements = mapped .FilterOutObsoleteItemsBy(thirdPartyItems) .FilterOutEmptyItems(); elements.AddRange(existingMappingElements); var newMappingElements = thirdPartyItems .FilterOutDuplicateThirdPartyItemsBy(elements) .ToMappingElements(source); elements.AddRange(newMappingElements); var container = new MappingContainer(); container.AddRange(elements.OrderBy(r => r.Key).ToList()); return container; }