Есть ли способ создать SortedDictionary с помощью Linq? Это позволит избежать неудобств (и раздувания кода) создания класса компаратора.
Например, создайте словарь, отсортированный по обратной стороне строкового ключа:
//NOT VALID SYNTAX
SortedDictionary<string, int> sortDict = new SortedDictionary(kvp => new String(kvp.Key.Reverse().ToArray());
//VALID SYNTAX
SortedDictionary<string, int> sortDict = new SortedDictionary<string, int>(new ReverseStringComparer);
private class ReverseStringComparer: IComparer<String>
{
public int Compare(string x, string y)
{
string s1 = new string(x.Reverse().ToArray());
string s2 = new string(y.Reverse().ToArray());
return s1.CompareTo(s2);
}
}
ReverseComparer<T>
Джона Скита, который более эффективен? - person Tim Schmelter   schedule 04.02.2014Reverse().ToArray())
избыточен, так как он мог просто поменять местами x и y, не так ли? - person Tim Schmelter   schedule 04.02.2014LINQ
не создает компараторов. Но методыLINQ
(например, OrderBy) могут использовать компараторы. - person Selman Genç   schedule 04.02.2014