質問: リスト番号のリストがあります(List<List<int>> listNumberCollection)
: 4 行 x 3 列
1 3 9
6 5 6
3 2 7
2 7 2
列にランクを記録するにはどうすればよいですか (最小の数字が 1 番目です)。
1 2 4
4 3 2
3 1 3
2 4 1
私の仕事: 列の数字を並べ替えるには、転置用の関数を作成します (4 列 x 3 行):
1 6 3 2
3 5 2 7
9 6 7 2
private List<List<Double>> MatrixTransposition(int k, List<List<Double>> listNumberCollection)
{
var revisedAllRanks = new List<List<Double>>();
for (int i = 0; i < k; i++ )
{
var allRanks = new List<Double>();
allRanks.AddRange(listNumberCollection.Select(value => value[i]));
revisedAllRanks.Add(allRanks);
}
return revisedAllRanks;
}
2 つのプロパティ (Number、Rank) を持つ NumberRank という名前のクラスを作成し、NumberRank のリストに追加しようとしました
var revisedListNumberCollection = MatrixTransposition(k, listNumberCollection);
var listNumberRanks = new List<List<NumberRank>>();
foreach(List<Double> vectorsCollection in revisedListNumberCollection)
{
List<NumberRank> numberRanks = vectorsCollection.OrderByDescending(number => number).Select((number, i) => new NumberRank(number, i + 1)).ToList();
listNumberRanks.Add(numberRanks);
}
ただし、取得した結果はランク付きの順序付けられた番号 (最初の列: 1-1 2-2 3-3 6-4...) であり、必要なもの (1-1 6-4 3-3 2-2) ではありません。ありがとう!