リストの要素によるソート(OrderBy)と、任意の数の割り当てについて
フルーツの分配プログラムを作っています。
リストの扱い方、リスト内の要素によるリストのソートの仕方が不明です。それができたら、リスト内の各アイテムにループによって、任意の数を一つずつ振り当てていくということがしたいです。
- リストは、人名と年齢についての情報が入っています(氏 + 名 + 年齢)で、ユーザー入力によりリスト追加されます。(氏名と年齢にわけて多次元配列にしたほうがスマートなのでしょうか?)
- リストを年齢でソートしたいです
- 任意の入力数を、リスト内の情報に順番に加えていきたいです。(割り算による同じ数の分配ではなく、ループでフルーツがなくなるまで一つずつ順番に分配するイメージ)
コード
List<string> names = new List<string>();
private void BtnDivide_Click(object sender, RoutedEventArgs e)
{
int nrOfFruits = int.Parse(TxtTotalFruits.Text);
int c = names.Count;
int division;
string firstName = TxtFirstName.Text;
string lastName = TxtLastName.Text;
string txtAge = TxtAge.Text;
// 割り算で平等に分配すると場合により余剰がでるので、最終的には商を出すのではなく、ループで最後の一つまで分配したいです。
division = nrOfFruits / c;
for (int i = 0; i < c; i++)
{
// リスト内の年齢の要素を使って昇順にソートしたいです。
//Lambda operator: =>
//OrderByを使う?
var orderedNames = names.OrderBy(txtAge => names);
//wpf上のリストボックスNameListとorderedNamesを繋ぐ
NameList.Items[i] = orderedNames;
//希望の順番でリストをソートできたところで、wpf上のリストボックスに数を表示させる。
NameList.Items[i] += " " + division.ToString() + " 個のフルーツ";
}
}