148

我有这个List<string>

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

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

4

5 回答 5

288
ListaServizi = ListaServizi.OrderBy(q => q).ToList();
于 2012-04-18T14:27:04.900 回答
54

您可以使用排序

List<string> ListaServizi = new List<string>() { };
ListaServizi.Sort();
于 2012-04-18T14:27:56.823 回答
17

其他答案建议是正确的Sort,但他们似乎忽略了存储位置键入为IList<string. Sort不是界面的一部分。

如果您知道ListaServizi它将始终包含 a List<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.
}

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

于 2012-04-18T14:48:56.193 回答
8
ListaServizi.Sort();

会为你做的。字符串列表很简单。如果对对象进行分类,您需要更聪明一点。

于 2012-04-18T14:29:58.733 回答
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));
}

输出:Abdi 3 Alex 2 Bob 4

于 2016-12-22T16:00:54.857 回答