2010-10-19 85 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.