3

業界名 (文字列) の一意のアルファベット順のリストを取得しようとしています。これが私のコードです:

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

最後の行でコンパイル エラーがスローされます。

私は何を間違っていますか?

4

5 に答える 5

5

List.Sort元のリストをソートし、新しいリストを返しません。したがって、この方法を使用するか、次のいずれかを使用しますEnumerable.OrderBy + ToList

効率的:

industryList.Sort();

効率が悪い:

industryList = industryList.OrderBy(s => s).ToList();
于 2013-06-11T15:04:50.493 に答える
3

Sort は void メソッドです。このメソッドから値を取得することはできません。この記事で見ることができます

OrderBy()を使用してリストを並べ替えることができます

于 2013-06-11T15:03:41.703 に答える
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()だけを実行しても意味がありません

于 2013-06-11T15:05:33.340 に答える
1

リストをその場でソートします。コピーが必要な場合は、 を使用しますOrderBy

于 2013-06-11T15:03:35.707 に答える
0

1 つのオプションは、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();
于 2013-06-11T15:11:46.510 に答える