Dev2.DataList.ActivityDataMappingBuilder.ReconcileExistingAndMasterView C# (CSharp) Method

ReconcileExistingAndMasterView() private method

Reconsiles the exiting and master view.
private ReconcileExistingAndMasterView ( IList masterView, IEnumerable existingView ) : IList
masterView IList The master view.
existingView IEnumerable The existing view.
return IList
        private IList<IInputOutputViewModel> ReconcileExistingAndMasterView(IList<IInputOutputViewModel> masterView, IEnumerable<IInputOutputViewModel> existingView)
        {
            var equalityCompareImpl = new InputOutputViewModelEqualityComparer();

            var intersectionResult = existingView.Intersect(masterView, equalityCompareImpl);

            IEnumerable<IInputOutputViewModel> inputOutputViewModels = intersectionResult as IList<IInputOutputViewModel> ?? intersectionResult.ToList();
            foreach(var intersectionRowItem in inputOutputViewModels)
            {
                //  Find a match in master list and tranfer properties ;)
                var match = masterView.FirstOrDefault(c => c.DisplayName == intersectionRowItem.DisplayName);

                if(match != null)
                {
                    intersectionRowItem.Required = match.Required;
                    intersectionRowItem.DefaultValue = match.DefaultValue;
                }
            }

            // ordering maters ;)
            IList<IInputOutputViewModel> result = inputOutputViewModels.Union(masterView, equalityCompareImpl).ToList();

            return result;
        }