0

//集合“fields”包含一组带有“FieldId”列的行

DataRow[] fields = GetFields();

//这个字典包含一组键值对。键代表 FieldId,值代表 OrderId

Dictionary<string, int> orders = new Dictionary<string, int>();
orders = LoadOrders();

我需要按照字典中 OrderId 的顺序重新排序“字段”集合。字典应该用作交叉引用来查找 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

如果有人对此有任何想法,可以分享一下吗?谢谢你。

4

3 回答 3

1

LINQ来救援!

var results = fields.OrderBy(field => orders[field["FieldID"]]);
于 2012-08-30T20:11:16.773 回答
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集合中存在的所有值。

于 2012-08-30T20:13:34.377 回答
0
var result = (from entry in myDict 
              orderby entry.Value ascending 
              select entry)
              .ToDictionary(pair => pair.Key, pair => pair.Value);
于 2012-08-30T20:11:07.627 回答