【发布时间】:2012-04-18 14:24:36
【问题描述】:
我有这个List<string>:
IList<string> ListaServizi = new List<string>();
如何按字母和升序排列?
【问题讨论】:
-
排序方法;如果您还需要降序,请与 Reverse 结合使用
我有这个List<string>:
IList<string> ListaServizi = new List<string>();
如何按字母和升序排列?
【问题讨论】:
ListaServizi = ListaServizi.OrderBy(q => q).ToList();
【讨论】:
IList<string>。与ListaServizi.Sort() 获得更多支持的答案不同,此代码实际上可以按编写方式工作。我并不是说这是我会选择的解决方案,但这实际上是我发布答案时唯一正确的答案。
.Sort,那么为什么不这样做。
List 进行排序。与这个答案相关的成本是不平凡的,也是不必要的。它确实获得了nothing。它增加了代码的复杂性,不那么简洁,效率较低,这里实际上除了缺点什么都没有。
你可以使用Sort
List<string> ListaServizi = new List<string>() { };
ListaServizi.Sort();
【讨论】:
其他答案建议Sort 是正确的,但他们似乎忽略了存储位置键入为IList<string 的事实。 Sort 不是界面的一部分。
如果您知道ListaServizi 将始终包含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> 的不同实现,请发表评论,我会添加一两个建议以对其进行排序。
【讨论】:
ListaServizi.Sort();
会为您做到这一点。使用字符串列表很简单。如果对对象进行排序,您需要更聪明一点。
【讨论】:
ListaServizi 是IList<string>;该接口没有Sort 方法。你至少需要一个演员。
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
【讨论】: