列表排序编译错误

时间:2013-06-11 15:01:55

标签: c# list sorting asp.net-3.5 hashset

我正在尝试获得一个独特的,按字母顺序排列的行业名称(字符串)列表。这是我的代码:

HashSet<string> industryHash = new HashSet<string>();
List<string> industryList = new List<string>();
List<string> orderedIndustries = new List<string>();

// add a few items to industryHash

industryList = industryHash.ToList<string>();
orderedIndustries = industryList.Sort(); //throws compilation error

最后一行抛出编译错误: &#34;无法隐式转换类型&#39; void&#39;到&#39; System.Collections.Generic.List&#34;

我做错了什么?

5 个答案:

答案 0 :(得分:3)

Sort是一个void方法,您无法从此方法中检索值。您可以查看this article

您可以使用OrderBy()订购列表

答案 1 :(得分:3)

List.Sort对原始列表进行排序,但不会返回新列表。因此要么使用此方法,要么使用Enumerable.OrderBy + ToList

高效:

industryList.Sort();

效率低下:

industryList = industryList.OrderBy(s => s).ToList();

答案 2 :(得分:1)

它按原样对列表进行排序。如果您需要副本,请使用OrderBy

答案 3 :(得分:1)

这样做:

HashSet<string> industryHash = new HashSet<string>();
List<string> industryList = new List<string>();

// add a few items to industryHash

industryList = industryHash.ToList<string>();
List<string> orderedIndustries = new List<string>(industryList.Sort()); 

注意:不保留未排序的列表,所以没有真正的重点只做industryList.Sort()

答案 4 :(得分:0)

一个选项是使用LINQ并删除industryList

HashSet<string> industryHash = new HashSet<string>();
//List<string> industryList = new List<string>();
List<string> orderedIndustries = new List<string>();

orderedIndustries = (from s in industryHash
                     orderby s
                     select s).ToList();