提问人:markzzz 提问时间:4/18/2012 最后编辑:Johnnymarkzzz 更新时间:1/25/2019 访问量:261616
如何订购 List<string>?
How can I order a List<string>?
答:
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
其他答案是正确的,但他们似乎忽略了存储位置被键入为 的事实。 不是接口的一部分。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>
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
评论
.Sort