【问题标题】:Sorting a list in C#在 C# 中对列表进行排序
【发布时间】:2010-11-17 18:37:17
【问题描述】:

我有一个如下所示的课程:

class Record
{
    public string host { get; set; }
    public string type { get; set; }
    public string name { get; set; }
    public string RunAsUser { get; set; }
    public string Status { get; set; }
    public string StartMode { get; set; }
}

还有这个类的列表:

List<Record> Records = new List<Record>();

此列表包含许多条目。如何根据Record.host(按字母顺序)对该列表进行排序?

是否有内置函数,还是我需要自己编写?如果是这样,有人可以通过给我一些伪代码来为我指明正确的方向吗?

【问题讨论】:

    标签: c# list sorting


    【解决方案1】:

    如果您只需要按排序顺序迭代它们,您可以使用 Linq 对它们进行排序。

    Records.OrderBy(r => r.host)
    

    否则,您可以调用:

    Records.sort((x, y) => string.Compare(x.host, y.host)); 
    

    对列表进行永久排序。

    【讨论】:

    • 只要你想升序。另外:List&lt;Record&gt; acending = descending.OrderBy(x =&gt; x.host).ThenBy(x =&gt; x.name).ToList();
    【解决方案2】:

    以下将对列表本身进行排序:

    Records.Sort((a, b) => String.Compare(a.host, b.host));
    

    【讨论】:

    • 注意;使用string.Compare(a.host,b.host) 会更安全——如果a.hostnull,你就不必担心了。
    最近更新 更多