【问题标题】:Sort list of class elements类元素的排序列表
【发布时间】:2012-08-22 19:44:45
【问题描述】:

我有一个这样的记录类:

public class RecordInfo
{
    public String CDate;
    public String Patient_ID;
    public Color Zone;
    public String Fname;
    public String Lname;
    public Int64 ImgSize;
    public String ImagePrefix;
    public String ImagePath;
    public String Sex;
    public String TZ;
}

我列出了这样的 RecordInfo 列表:

List<RecordInfo> PatientRecords = new List<RecordInfo>();

我向其中添加了记录,但我想根据 Patient_ID、性别、Fname 等对该列表进行排序.....

知道我该怎么做吗?

【问题讨论】:

    标签: c# class-members


    【解决方案1】:

    当然,LINQ 可以轻松使用 OrderByOrderByDescendingThenByThenByDescending

    // Note change from Patient_ID to PatientId for naming conventions.
    List<RecordInfo> sorted = records.OrderBy(x => x.PatientId).ToList();
    

    这将创建一个 列表 - LINQ 基于将一个序列投影到新序列上的查询,而不是改变现有列表。

    或者,您可以使用 List&lt;T&gt;.Sort 和自定义比较器进行就地排序。

    无论哪种方式,我都强烈建议使用属性而不是公共字段,并遵循 .NET 命名约定。

    【讨论】:

    • 记录指的是什么?因为我试图用 PatientRecords 替换它,但它没有用
    • @R.Vector, it didn't work?请把it didn't work翻译成英文好吗?从软件开发人员的角度,而不是软件用户。
    • @R.Vector:您的原始记录列表。我没有使用名称PatientRecords,因为这不是一个好的局部变量名称。正如达林建议的那样,“它不起作用”并不能清楚地描述您所看到的。
    • @R.Vector:你说你用PatientRecords 替换了它 - 之后它不会给出那个错误......
    • using System.Linq; 添加到文件顶部,以引入定义OrderBy 扩展方法的命名空间。
    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2018-05-08
    • 2021-12-18
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多