2010-10-19 89 views
0

排序集合有問題。用戶保存很少的值,然後他對它進行排序。排序列表問題

在下次啓動程序必須訂購新的集合。

已由用戶保存的值可以在新的集合中,但當這些值不在新的集合中時,可以是情況。

我寫了一些代碼,我想您的意見。如果有意識

var oldValues = new List<string>(new[] { "id5", "id3", "id1" }); 
var valuesToOrder = new List<string>(new[] { "id1", "id2", "id3", "id4" }); 

int numberOfReorderedValues = 0; 

for (int i = 0; i < oldValues.Count; i++) 
{ 
    if (valuesToOrder.Contains(oldValues[i])) 
    { 
     int indexOfValueWhichShouldBeBefore = valuesToOrder.IndexOf(oldValues[i]); 
     string valueWhichShouldBeBefore = valuesToOrder[indexOfValueWhichShouldBeBefore]; 

     string valueWhichShouldBeAfter = valuesToOrder[numberOfReorderedValues]; 

     valuesToOrder[numberOfReorderedValues] = valueWhichShouldBeBefore; 
     valuesToOrder[indexOfValueWhichShouldBeBefore] = valueWhichShouldBeAfter; 


     numberOfReorderedValues++; 

此代碼的工作,但我必須明天它展示給我的老闆,我不要去糊弄

+1

「會」和「應該」不能一個接一個地在英語之後出現,並且不應該在代碼中這樣做。選擇一個。 – 2010-10-19 20:27:24

+0

我知道,這是錯誤的。謝謝 :) – user278618 2010-10-19 20:29:57

回答

1

目前還不清楚你在做什麼。

這聽起來像你有2個列表。其中一個包含'required'列表,另一個包含'pick from'列表。

如何使用LINQ進行排序?

var oldValues = new List<string>(new[] { "id5", "id3", "id1" }); 
var valuesToOrder = new List<string>(new[] { "id1", "id2", "id3", "id4" }); 

var sorted = valuesToOrder.Intersect(oldValues).OrderBy(x=>x); 

// sorted now has id1 and id3, sorted alphabetically.