A Dictionary<TKey, TValue> . , .
SortedDictionary, , .
, :
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
using StrStrDict = Dictionary<string, string>;
public sealed class CustomComparer: IComparer<StrStrDict>
{
public int Compare(StrStrDict lhs, StrStrDict rhs)
{
double x = Double.Parse(lhs["number"]);
double y = Double.Parse(rhs["number"]);
return x.CompareTo(y);
}
}
internal class Program
{
private static void Main()
{
var dict1 = new StrStrDict
{
{"name", "name1"},
{"number", "0.0158"}
};
var dict2 = new StrStrDict
{
{"name", "name2"},
{"number", "0.0038"}
};
var dict3 = new StrStrDict
{
{"name", "name3"},
{"number", "0.0148"}
};
var list = new List<StrStrDict> {dict1, dict2, dict3};
list.Sort(new CustomComparer());
foreach (var element in list)
{
Console.WriteLine("Number = " + element["number"]);
}
}
}
}
, , , , , , , Dictionary<string, string>. . , Dictionary<string, object> - . .
, !
Dictionary<string, object>:
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
using StrObjDict = Dictionary<string, object>;
public sealed class CustomComparer: IComparer<StrObjDict>
{
public int Compare(StrObjDict lhs, StrObjDict rhs)
{
double x = (double)lhs["number"];
double y = (double)rhs["number"];
return x.CompareTo(y);
}
}
internal class Program
{
private static void Main()
{
var dict1 = new StrObjDict
{
{"name", "name1"},
{"number", 0.0158}
};
var dict2 = new StrObjDict
{
{"name", "name2"},
{"number", 0.0038}
};
var dict3 = new StrObjDict
{
{"name", "name3"},
{"number", 0.0148}
};
var list = new List<StrObjDict> {dict1, dict2, dict3};
list.Sort(new CustomComparer());
foreach (var element in list)
{
Console.WriteLine("Name = {0}, Number = {1}", element["name"], element["number"]);
}
}
}
}
, , , . "" "" , , !
: , ( !):
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
public sealed class Entry
{
public readonly string Name;
public readonly double Number;
public Entry(string name, double number)
{
Name = name;
Number = number;
}
}
internal class Program
{
private static void Main()
{
var list = new List<Entry>
{
new Entry("name1", 0.0158),
new Entry("name2", 0.0038),
new Entry("name3", 0.0148)
};
list.Sort((lhs, rhs) => lhs.Number.CompareTo(rhs.Number));
foreach (var element in list)
{
Console.WriteLine("Name = {0}, Number = {1}", element.Name, element.Number);
}
}
}
}