排序列表问题

时间:2010-10-19 20:09:10

标签: sorting .net-4.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 个答案:

答案 0 :(得分: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.