2016-04-05 9 views
0

私のアプリケーションでは、製品が保持されているすべての場所の場所名とピッキング優先度(最下位が選択されています)を含むListViewがあります。同様に、このように、私も一時リストの個々の製品が保存されている唯一の場所が含まれていることを作成していますたとえば、: - 。リストを並べ替える方法ListViewの列のデータを使用して

  LISTVIEW         List<String> 
      --------         ------------ 
__________________________     __________________________ 
|Location |Picking Priority|    |   Location   | 
|---------|----------------|    |--------------------------| 
| A |  100  |    |   A    | 
| B |  50  |    |   C    | 
| C |  500  |    |   D    | 
| D |  150  |    |__________________________| 
|_________|________________| 

は何が起こるしたいことはピッキングの優先度に基づいて順序付けされるリストでありますリストビュー内のその位置の、最も低いものから最も高いものまで。

効果で、これは今、このようになります。上記のリストを意味します: -

__________________________    
|   Location   | 
|--------------------------| 
|   A    | 
|   D    | 
|   C    | 
|__________________________| 

はどのようにこれを行うことは可能でしょうか?

+2

んこのリストでなければなりませんか?リストにすることはできませんし、yourClassでLocationとPriorityプロパティを定義できますか? OrdersBy(d => d.Priority).Select(d => d.Location).ToList(); – Gusman

+0

理想的には、既存のコードを妨げないようにリストでなければなりません。 –

答えて

2

リストアイテムに基づいてアイテムを注文することはできません。醜いですが、遅いです(両方のプロパティでクラスを使用するよりも遅いですが)。

I [1]の.textは(整数形式で)優先度のカラムであるListViewItem.Text場所とListViewItem.Subitemsの名前が含まれていると:

var items = theListView.Items.Cast<ListViewItem>(); 
var sortedList = theStringList.OrderBy(d => items.Where(i => i.Text == d).Select(i => int.Parse(i.Subitems[1].Text)).First()).ToList(); 
+0

これは本当にうまく動作します。私はクラスを使うほうが良いだろうとあなたに同意しますが、代わりとして、それはかなり迅速に動作します。 –

関連する問題