を使用しない方法、私は正常に数字の集合を生成し、配列内の要素の位置をシャッフルするために管理:はEnumerable.OrderByが進行コードを使用してkeySelector
var randomNumbers = Enumerable.Range(0, 100)
.OrderBy(x => Guid.NewGuid());
すべての機能罰金が、それは一種の投げていますEnumerable.OrderBy
を理解しようとすると、私の作品の中で馬鹿になる。
var pupils = new[]
{
new Person() { Name = "Alex", Age = 17 },
new Person() { Name = "Jack", Age = 21 }
};
var query = pupils.OrderBy(x => x.Age);
それは私が私がソートしたいプロパティを渡しています私の理解だと私はLINQは、明示的なIComparer
が指定されていない場合は、コレクションを注文する方法を決定するためにComparer<T>.Default
を使用することを想定します。たとえば、次のコードを取ります2番目の過負荷このような方法でアレイをシャッフルするために、この合理的なロジックがどのように適用されるのか、私は本当に分かりません。では、LINQを使ってこのような配列をシャッフルできますか?
私はここであなたの質問を理解しません。上記の例では、ageがintであると仮定すると、 'query'は順序付きリストを含みます。そのため、最初の配列はソートされず、シャッフルされません。 – ryadavilli
投稿を更新しました。私は最初のコードサンプルについて話しています。 –
実際のコードでFisher-Yatesをシャッフルしよう。もっと速い。 – nawfal