7

プロパティ LastName を含む Person というクラスがあります。これは、Person の姓に対応する文字列を反映しています。

次のようにリストを作成しました。

var People = List<Person>

私がやりたいのは、人を LastName プロパティでアルファベット順にソートすることです。

いくつかの例を見た後、私は試しました

People = People.OrderBy(p => p.LastName);

しかし、うまくいきません。

4

3 に答える 3

15

LINQ を使用すると、結果を次のように変換する必要がありますList<Person>

People = People.OrderBy(p => p.LastName).ToList();

OrderByを返すので、これをリストに戻すにIOrderedEnumerable<T>は追加の呼び出しが必要です。ToList()

ただし、インプレースソートが効果的に必要なため、次をList<T>.Sort直接使用することもできます。

People.Sort((p1, p2) => p1.LastName.CompareTo(p2.LastName));
于 2012-11-07T23:06:49.987 に答える
2

最も簡単なのは使用することですToList():

People = People.OrderBy(p => p.LastName).ToList();

ToList新しいオーダーを作成するに は が必要ですList<Person>

元のリストを並べ替える別のオプションは、次を使用することList.Sortです。

People.Sort((p1,p2) => p1.LastName.CompareTo(p2.LastName));
于 2012-11-07T23:07:09.830 に答える
0

orderby の結果を.Tolist()以下のように変換する必要があります

var people = People.OrderBy(p => p.LastName).ToList();
于 2012-11-07T23:18:10.767 に答える