public static KanjiOrdering Create<T>(string description, KanjiDict kanjiDict, Func<KanjiEntry, T> f) { var k = new KanjiOrdering(description) { comparer = Comparer<CodePoint>.Create((l, r) => { var left = kanjiDict.Lookup(l.ToString()).Map(f); var right = kanjiDict.Lookup(r.ToString()).Map(f); return left.CompareTo(right); }) }; return k; }
public IEnumerable <CodePoint> LookupByRadicals(IEnumerable <CodePoint> radicals) { return(radkfile.LookupMatching(radicals.Select(r => r.ToString())) .OrderBy(r => kanjidict.Lookup(r) .Map(e => e.StrokeCount) .ValueOr(int.MaxValue)) .Select(cp => CodePoint.FromString(cp))); }