Exemplo n.º 1
0
        public StringList Sort(string[][] stringLists, SortOrder sortOrder)
        {
            if (stringLists == null)
            {
                throw new ArgumentNullException("stringLists");
            }

            if ((stringLists.Count() == 0) || (stringLists.Where(x => x != null).Count() == 0))
            {
                throw new ArgumentException("stringLists cannot be empty");
            }

            string[] sortedUniqueStrings = new string[0];
            string[] duplicateStrings    = new string[0];

            foreach (var stringList in stringLists)
            {
                foreach (var stringItem in stringList)
                {
                    if (sortedUniqueStrings.Contains(stringItem))
                    {
                        Array.Resize(ref duplicateStrings, duplicateStrings.Length + 1);
                        duplicateStrings[duplicateStrings.Length - 1] = stringItem;
                    }
                    else
                    {
                        Array.Resize(ref sortedUniqueStrings, sortedUniqueStrings.Length + 1);
                        sortedUniqueStrings[sortedUniqueStrings.Length - 1] = stringItem;
                    }
                }
            }

            _sort.Sort(sortedUniqueStrings);
            if (sortOrder.Equals(SortOrder.Descending))
            {
                _sort.Reverse(sortedUniqueStrings);
            }

            return(new StringList {
                SortedUniqueStrings = sortedUniqueStrings, DuplicateStrings = duplicateStrings
            });
        }