我对排序集合有问题。用户保存很少的值,然后对其进行排序。
下次启动时,必须订购新的系列。
用户保存的值可以在新集合中,但可能是这些值不在新集合中的情况。
我写了一些代码,如果有意义,我想要你的反馈
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++;
这段代码有效,但明天我必须把它展示给我的老板,我不会傻瓜
答案 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.