如何订购 List<string>?

How can I order a List<string>?

提问人:markzzz 提问时间:4/18/2012 最后编辑:Johnnymarkzzz 更新时间:1/25/2019 访问量:261616

问:

我有这个:List<string>

IList<string> ListaServizi = new List<string>();

如何按字母顺序和升序排序?

C# 字符串 列表

评论

4赞 Matthew 4/18/2012
你试过 msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs.90%29.aspx 吗?.Sort
0赞 Nathan Q 4/18/2012
排序方法;结合 Reverse 如果您还需要降序

答:

315赞 daryal 4/18/2012 #1
ListaServizi = ListaServizi.OrderBy(q => q).ToList();

评论

1赞 phoog 4/18/2012
使用 OrderBy @Servy的一个原因是 ListaServizi 没有 Sort 方法,因为它被声明为 .此代码实际上可以按编写的方式工作,这与获得更多赞成票的答案不同。我并不是说这是我选择的解决方案,但当我发布答案时,这实际上是唯一正确的答案。IList<string>ListaServizi.Sort()
0赞 Servy 4/19/2012
如果这不是你会选择的解决方案,那么为什么要提出它作为答案呢?提出你会做什么作为答案;如果这意味着将类型从 IList 更改为 List,以便您可以调用它,那么为什么不这样做呢?.Sort
1赞 Aurelien Ribon 8/29/2014
@Servy 他在不更改问题规范的情况下解决了问题。到目前为止,这是首选方式。此外,问题陈述使用了接口而不是实现模式,这非常重要。建议更改列表类型是正确的,但应该在正确的答案之后作为替代答案,因为它需要更改问题。
1赞 Servy 8/29/2014
@AurélienRibon 问题陈述中没有说变量的类型不能改变。这些要求非常具体地对 .与这个答案相关的成本是非同小的,也是不必要的。它从字面上一无所获。它增加了代码的复杂性,它不那么简洁,效率较低,这里实际上只有缺点。List
60赞 Richard Dalton 4/18/2012 #2

您可以使用排序

List<string> ListaServizi = new List<string>() { };
ListaServizi.Sort();
8赞 Ste 4/18/2012 #3
ListaServizi.Sort();

会为你做这件事。使用字符串列表非常简单。如果对对象进行排序,您需要更聪明一些。

评论

5赞 phoog 4/18/2012
ListaServizi是;该接口没有方法。你至少需要在这里打石膏。IList<string>Sort
17赞 phoog 4/18/2012 #4

其他答案是正确的,但他们似乎忽略了存储位置被键入为 的事实。 不是接口的一部分。SortIList<stringSort

如果您知道将始终包含 ,则可以更改其声明的类型,或使用强制转换。如果不确定,可以测试类型:ListaServiziList<string>

if (typeof(List<string>).IsAssignableFrom(ListaServizi.GetType()))
    ((List<string>)ListaServizi).Sort();
else
{
    //... some other solution; there are a few to choose from.
}

也许更惯用:

List<string> typeCheck = ListaServizi as List<string>;
if (typeCheck != null)
    typeCheck.Sort();
else
{
    //... some other solution; there are a few to choose from.
}

如果您知道有时会有不同的实现,请发表评论,我会添加一两个建议来对其进行排序。ListaServiziIList<string>

5赞 Abdi 12/23/2016 #5
List<string> myCollection = new List<string>()
{
    "Bob", "Bob","Alex", "Abdi", "Abdi", "Bob", "Alex", "Bob","Abdi"
};

myCollection.Sort();
foreach (var name in myCollection.Distinct())
{
    Console.WriteLine(name + " " + myCollection.Count(x=> x == name));
}

输出: 阿卜迪 3 亚历克斯 2 鲍勃 4