using System; using System.Collections.Generic; using System.Text; namespace sharpcomparer { public class IndexComparison : Comparison { public IndexComparison(Index leftItem, Index rightItem, ComparisonDifference difference) : base(leftItem, rightItem, difference) { } public string Name { get { return LeftItem != null ? LeftItem.IndexName : (RightItem != null ? RightItem.IndexName : string.Empty); } } public static List Compare(List indexes1, List indexes2) { List comparison = new List(); foreach (Index index in indexes1) { Index result = indexes2.Find( delegate(Index i) { return i.TableName == index.TableName; } ); if (result != null) { if (index != result) { comparison.Add(new IndexComparison(index, result, ComparisonDifference.Different)); } else { comparison.Add(new IndexComparison(index, result, ComparisonDifference.None)); } } else { comparison.Add(new IndexComparison(index, null, ComparisonDifference.LeftOnly)); } } foreach (Index index in indexes2) { Index result = indexes1.Find( delegate(Index i) { return i.IndexName == index.IndexName; } ); if (result == null) { comparison.Add(new IndexComparison(null, index, ComparisonDifference.RightOnly)); } } return comparison; } } }