包含int和string的2D SortedList,需要到最高int的string
2D SortedList containing int and string, need the string of to the highest int
我有一个二维列表,其中包含句子和为该句子生成的分数,我需要获得分数最高的句子。
所以列表是:
("This is sentence one", "302")
("And another sentence", "154")
("Oh and heres another", "528")
形成列表的功能以及我需要获得最高分的句子的地方是:
protected void buildSummary()
{
scoreCoord2 = -1;
for (int x1 = 0; x1 < results.Length; x1++)
{
SortedList<int, string> paragraphScoreslist = new SortedList<int, string>();
for (int x2 = 0; x2 < results[x1].Length; x2++)
{
scoreCoord2++;
paragraphScoreslist.Add(intersectionSentenceScores[scoreCoord2], results[x1][x2]);
}
int maxValue = paragraphScoreslist.Max(k => k.Key);
//string maxValue = paragraphScoreslist.TryGetValue;
TextboxSummary.Text = maxValue.ToString();
}
}
我能够从排序列表中获取最大的 int 值,但不知道如何获取与其关联的字符串。我想我需要使用 TryGetValue 但我不知道在 2D 列表中使用它,我以前没有使用过它。
如果您可以控制数组,请将其替换为 SortedList,然后您可以毫不费力地使用 SortedList.Max() 函数。排序列表可能是最好的选择,因为它本质上是排序的(您想要的),因此获得最高值(即最大值)将比未排序的数组或未排序的列表更快。
如果您无法控制接收到的数据,请将接收到的数据投射到新表单中(上面的 SortedList
使用您在 post 中提出的示例,为了简单起见,我们将其称为 "matrix":
string[,] matrix =
{
{ "This is sentence one", "302" },
{ "And another sentence", "154" },
{ "Oh and heres another", "528" }
};
这是将其放入排序列表的代码:
// New instance, pretty simple
SortedList<int, string> list = new SortedList<int, string>();
// Loop through the array and project it into a new form
for(int i = 0; i <= matrix.Length(0); i++) {
list.Add(Convert.ToInt32(matrix[i, 1]), matrix[i, 0]);
}
// Get the max value in the list
var maxValue = list.Max(k => k.Key);
现在你可以用这个值做你想做的事了。如果你想得到它的句子,你应该使用 TryGetValue
方法,但这取决于你。像这样:
string sentence= string.Empty;
if (list.TryGetValue(maxValue, out sentence))
{
// Do something with the string you got
}
有关如何使用整个 Try...
方法的更多信息,您应该阅读 out 和 ref 参数。
还有什么吗?
我有一个二维列表,其中包含句子和为该句子生成的分数,我需要获得分数最高的句子。
所以列表是:
("This is sentence one", "302")
("And another sentence", "154")
("Oh and heres another", "528")
形成列表的功能以及我需要获得最高分的句子的地方是:
protected void buildSummary()
{
scoreCoord2 = -1;
for (int x1 = 0; x1 < results.Length; x1++)
{
SortedList<int, string> paragraphScoreslist = new SortedList<int, string>();
for (int x2 = 0; x2 < results[x1].Length; x2++)
{
scoreCoord2++;
paragraphScoreslist.Add(intersectionSentenceScores[scoreCoord2], results[x1][x2]);
}
int maxValue = paragraphScoreslist.Max(k => k.Key);
//string maxValue = paragraphScoreslist.TryGetValue;
TextboxSummary.Text = maxValue.ToString();
}
}
我能够从排序列表中获取最大的 int 值,但不知道如何获取与其关联的字符串。我想我需要使用 TryGetValue 但我不知道在 2D 列表中使用它,我以前没有使用过它。
如果您可以控制数组,请将其替换为 SortedList,然后您可以毫不费力地使用 SortedList.Max() 函数。排序列表可能是最好的选择,因为它本质上是排序的(您想要的),因此获得最高值(即最大值)将比未排序的数组或未排序的列表更快。
如果您无法控制接收到的数据,请将接收到的数据投射到新表单中(上面的 SortedList
使用您在 post 中提出的示例,为了简单起见,我们将其称为 "matrix":
string[,] matrix =
{
{ "This is sentence one", "302" },
{ "And another sentence", "154" },
{ "Oh and heres another", "528" }
};
这是将其放入排序列表的代码:
// New instance, pretty simple
SortedList<int, string> list = new SortedList<int, string>();
// Loop through the array and project it into a new form
for(int i = 0; i <= matrix.Length(0); i++) {
list.Add(Convert.ToInt32(matrix[i, 1]), matrix[i, 0]);
}
// Get the max value in the list
var maxValue = list.Max(k => k.Key);
现在你可以用这个值做你想做的事了。如果你想得到它的句子,你应该使用 TryGetValue
方法,但这取决于你。像这样:
string sentence= string.Empty;
if (list.TryGetValue(maxValue, out sentence))
{
// Do something with the string you got
}
有关如何使用整个 Try...
方法的更多信息,您应该阅读 out 和 ref 参数。
还有什么吗?