Mega Code Archive

 
Categories / C# / LINQ
 

Uses GroupBy to partition trimmed elements of an array using a custom comparer

using System; using System.Collections.Generic; using System.Linq; using System.Text; public class MainClass {     public static void Main() {         string[] anagrams = { "from ", " salt", " earn ", " last ", " near ", " form " };         var orderGroups = anagrams.GroupBy(                     w => w.Trim(),                     a => a.ToUpper(),                     new AnagramEqualityComparer()                     );         foreach (var v in orderGroups) {             Console.WriteLine(v);         }     }     public class AnagramEqualityComparer : IEqualityComparer<string> {         public bool Equals(string x, string y) {             return getCanonicalString(x) == getCanonicalString(y);         }         public int GetHashCode(string obj) {             return getCanonicalString(obj).GetHashCode();         }         private string getCanonicalString(string word) {             char[] wordChars = word.ToCharArray();             Array.Sort<char>(wordChars);             return new string(wordChars);         }     } }