LINQ C# Tutorial

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 {
        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(wordChars);
            return new string(wordChars);
        }
    }
}