我有一个项目列表,每个项目都有数字,然后是一个空格,然后是一个单词。认为拼字游戏。
36 adore 36 adore 27 amigo 31 amino 28 amiss
我正在尝试使用2位数字作为组织项目,可以按值顺序对单词进行排名。
我的列表ComJoined如上所示。
我的代码是:
for (int i = 0; i < ComJoined.Count; i++)
{
if (i + 1 <= ComJoined.Count)
{
int one = (Convert.ToInt32(ComJoined[i].Substring(0, 2)));
int two = Convert.ToInt32(ComJoined[i + 1].Substring(0, 2));
if (one <= two)
{
string Stuff = ComJoined[i];
ComJoined.Insert(i + 1, Stuff);
ComJoined.RemoveAt(i);
}
}
}
由于某种原因,它说“输入字符串的格式不正确”。我读到这意味着该字符串没有int值,但是要转换的部分(前两位数字)显然可以。为什么会这样?
答案 0 :(得分:0)
对于您的问题,这可能不太复杂:
var words = new SortedDictionary<int, string>();
foreach (var com in ComJoined)
{
string[] splitCom = com.Split(' ');
// Assuming your data is in the correct format. You could use TryParse to avoid an exception.
words.Add(int.Parse(splitCom[0]), splitCom[1]);
}
// Do something with the sorted dictionary...
foreach (KeyValuePair<int, string> word in words)
Console.WriteLine("{0} {1}", word.Key, word.Value);
答案 1 :(得分:0)
因此,您要按照2位数字的代码对降序排序,并且所有项目都以2位数字的开头?
这将只是一列linq:var sortedList = ComJoined.OrderByDescending().ToList()