0

//コレクション「fields」には、列「FieldId」を持つ行のセットが含まれています

DataRow[] fields = GetFields();

//このディクショナリには、キーと値のペアのセットが含まれています。キーは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

誰かがこれについて何かアイデアを持っているなら、あなたは共有できますか?ありがとうございました。

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 に答える