【问题标题】:C# List Logic Fail [duplicate]C#列表逻辑失败[重复]
【发布时间】:2016-06-10 09:34:44
【问题描述】:

我从一个列表中得到一个输出到一个 excel 文件中。对简单文件来说,它可能看起来像这样:

4 1 2 3

现在我想做的就是,把它按正确的顺序排列:

1 2 3 4

我用这段代码做了什么(isSort 包含 4 1 2 3):

        ...
        var isSortFin = new List<Item>();
        var FirstElement = isSort.First();
        foreach (var Itemd in toSort)
        {
            if (Itemd.Summary != FirstElement.Summary)
            {
                isSortFin.Add(Itemd);
            }
        }

        isSortFin.Add(FirstElement);
        return isSortFin;

现在我的输出是:

3 2 1 4

而不是渴望:

1 2 3 4

我哪里出错了?

【问题讨论】:

  • 如果你想排序为什么不使用Sort方法?
  • 为什么要重新发明轮子?这段代码在哪里排序? minimal reproducible example 在哪里?
  • 试试 linq 的订单:isSortFin.OrderBy(i =&gt; i.Summary)

标签: c#


【解决方案1】:

您可以使用OrderBy linq 扩展和排序元素。

isSort=  isSort.OrderBy(x=>x).ToList(); 

如果Item 是一个对象,请在OrderBy 表达式中指定属性名称以对该属性进行排序。

//ex.. 
isSort=  isSort.OrderBy(x=>x.Value).ToList();

【讨论】:

  • 如果这是你的答案,那么这个问题就是重复的。投票结束而不是回答。
  • 也许你是对的,但这不应该是投反对票的理由。
  • 每个人都可以对他们认为正确的帖子进行投票。如果我要否决这个答案,那将是因为它包含的正文很少(它没有解释代码)。另外,OP 有一个List&lt;Item&gt;,所以OrderBy(x=&gt;x) 不会做他们想做的事。
  • 我同意你的第二点,也许我可以改进包括那一点在内的答案,但不同意身体的点尺寸小。无论如何感谢您的建议。
  • 该死...为什么我在一个代码中放置了大约 5 个小时(我没有在这里发布,我基本上编写了我自己的排序方法 xD),这可以用一个衬里来完成...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多