【问题标题】:List sorting troubles列表排序问题
【发布时间】:2019-04-07 01:22:13
【问题描述】:

我有一份程序员名单:

programmers.Add(new Programmer("Jake", 1.9, 2000));
programmers.Add(new Programmer("Richard", 1.0, 1300)); 

我需要创建一个新的排序程序员列表 value => 2000 / 1.9.(向上)

我不知道如何将int 除以double 并按此结果对programmers 进行排序。你能帮我怎么做吗?

到目前为止我已经尝试过:

var ProgrammersSorted = programmers.OrderBy((x,y) => x.DailyWage / y.Speed).ToList();

程序员类:

public class Programmer
{
    public string Name { get; private set; }
    public double Speed { get; private set; }
    public int DailyWage { get; private set; }

    public Project Project { get; private set; }

    public string ProjectName
    {
        get
        {
            return Project?.Name ?? "No project assigned";
        }
    }

    public Programmer(string name, double speed, int dailyWage)
    {
        Name = name;
        Speed = speed;
        DailyWage = dailyWage;
    }
}

【问题讨论】:

  • 显示你做了什么。
  • 欢迎来到 SO。能否请您展示您到目前为止所尝试的内容。请向我们展示您在哪里构建此列表的代码以及您当前如何尝试执行此划分并对列表进行排序。
  • 请不要在 cmets 中添加代码,编辑您的问题以包含此信息。您还应该向我们展示 Programmer 类,因为您正在引用它的属性。
  • 种类:programmers.OrderBy(p => (decimal)(p.DailyWage/y.Speed)) ?

标签: c# .net list sorting


【解决方案1】:

你很亲密。试试这个:

var programmersSorted = programmers.OrderBy(x => x.DailyWage / x.Speed).ToList();

【讨论】:

  • 非常感谢,这正是我想要的
【解决方案2】:

请试试下面的代码,我想这会解决你的问题。

        var programmers = new List<Programmer>
        {
         new Programmer("SS",12.3,2345),
         new Programmer("ADE",1.21,22345),
         new Programmer("AR",12.2,23445),
         new Programmer("NK",12.5,23455)
        };

        var progrmrs = programmers.OrderBy(t => t.DailyWage / t.Speed).ToList();
        Console.WriteLine("Name\t Speed\t DailyWage");
        foreach (var prgrm in progrmrs)
        {
            Console.WriteLine("{0}\t {1}\t {2}", prgrm.Name, prgrm.Speed, prgrm.DailyWage);
        }

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2019-08-20
    • 2017-03-07
    • 1970-01-01
    • 2015-01-13
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多