列表排序问题

发布于 2024-09-28 01:28:55 字数 945 浏览 0 评论 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++;

这个代码可以工作,但是我明天必须把它展示给我的老板,我不会去愚弄

I have a problem with sorting collection. User saves few values and he sorts it.

At next launch program must order a new collection.

Values which have been saved by user can be in new collection, but It can be situation , when those values aren't in new collection.

I wrote some code, and I want your feedback If it has sense

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++;

This code works, but I must tomorrow show it to my boss, and I don't go to fool

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不咬妳我踢妳 2024-10-05 01:28:55

目前尚不清楚你在追求什么。

听起来你有 2 个列表。其中一个包含“必需”列表,另一个包含“从中选择”列表。

使用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.

It's not clear what you're after.

It sounds like you've got 2 lists. One of them contains a list of 'required', and the other contains a list of 'pick from'.

How about use LINQ to sort?

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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文