Iba*_*wns 7 .net c# linq string list
我正在尝试对List<string>包含每个数字后跟字母的元素列表的a 进行排序。这就是为什么每个元素不能简单地转换为 int 的原因。该列表在运行时生成,但例如,该列表可能包含以下元素:
10 dog, 53 cow, 2 crow, 29 horse, 12 rabbit, 107 frog, 35 cat, 7 dragon
Run Code Online (Sandbox Code Playgroud)
我试过这样排序:
public void Compare()
{
sortedList = sortedList.OrderBy(g => g).ToList();
}
Run Code Online (Sandbox Code Playgroud)
结果:
10 dog, 107 frog, 12 rabbit, 2 crow, 29 horse, 35 cat, 53 cow, 7 dragon
Run Code Online (Sandbox Code Playgroud)
很明显,它是按字母顺序排序的,因为在这个例子中,107 排在 12 之前,而 107 中的“10”小于 12。但我需要以某种方式对它进行排序,使其按照单词前面的数字顺序返回。
我需要这个例子来返回:
2 crow, 7 dragon, 10 dog, 12 rabbit, 29 horse, 35 cat, 53 cow, 107 frog
Run Code Online (Sandbox Code Playgroud)
我对编码很陌生,这让我完全难住了。关于如何达到我想要的结果的任何建议?
您可以提取所需的数据,然后按以下顺序进行排序
var sorted = list
.Select(x => new
{
Splited = x.Split(),
Raw = x
}) //split the string and keep the raw value
.Select(x => new
{
Count = int.Parse(x.Splited[0]), // extract the number
Raw = x.Raw
})
.OrderBy(x => x.Count) //order by that number
.Select(x => x.Raw); //select raw value
Run Code Online (Sandbox Code Playgroud)