uses GroupBy to partition trimmed elements of an array using a custom comparer : GroupBy « LINQ « C# / C Sharp





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);
        }
    }
}

 










Related examples in the same category

1.Use Group By
2.GroupBy partitions a list of numbers by their remainder when divided by 5.
3.uses group by to partition a list of products by category.
4.uses group by to partition a list of each customer's orders, first by year, and then by month.