//集合“fields”包含一组带有“FieldId”列
的行DataRow[] fields = GetFields();
//此字典包含一组键值对。 keys表示FieldId,值表示OrderId的
Dictionary<string, int> orders = new Dictionary<string, int>();
orders = LoadOrders();
我需要按照字典中OrderId的顺序重新排序“fields”集合。字典应该用作交叉引用来查找FieldId并获取OrderId。
Sample data in fields:
Books
Movies
Electronics
Sample data in orders:
<Books, 2>
<Movies, 3>
<Electronics, 1>
The output by reordering the "fields" should be :
Electronics
Books
Movies
如果有人对此有任何想法,请您分享一下吗?谢谢。
答案 0 :(得分:1)
LINQ救援!
var results = fields.OrderBy(field => orders[field["FieldID"]]);
答案 1 :(得分:1)
这应该有效:
var res = fields.OrderBy(x => orders[x.Field<string>("FieldId")]).ToArray();
或者,如果您更喜欢就地排序:
Array.Sort(fields,
(a,b) => orders[a.Field<string>("FieldId")]
.CompareTo(orders[b.Field<string>("FieldId")]));
当然,您需要确保orders
字典包含fields
集合中的所有值。
答案 2 :(得分:0)
var result = (from entry in myDict
orderby entry.Value ascending
select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);