Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
423 views
in Technique[技术] by (71.8m points)

c# - Sort list of class elements

I have a record class like this :

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

and I made a list of RecordInfo like this :

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

and I added records to it, but I would like to sort that list based on Patient_ID, sex, Fname, etc.....

Any idea how can I do that?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Sure, LINQ makes it easy using OrderBy, OrderByDescending, ThenBy and ThenByDescending:

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

That will create a new list - LINQ is based on queries which project one sequence onto a new one, rather than mutating the existing list.

Alternatively, you could use List<T>.Sort with a custom comparer to sort in-place.

Either way, I'd strongly recommend using properties instead of public fields, and also following .NET naming conventions.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...