我正在尝试获得一个独特的,按字母顺序排列的行业名称(字符串)列表。这是我的代码:
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;
我做错了什么?
答案 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();