C# C Linq-如何从列表第一个值的拆分中选择前5行

C# C Linq-如何从列表第一个值的拆分中选择前5行,c#,linq,select,C#,Linq,Select,我可能用了错误的措辞,但我有一个简单的列表,基于拆分,我希望从第一列中得到最大的值 这是密码 List<string> myString = new List<string>(); myString.Add("100.02|apples|pears"); myString.Add("22.02|apples|pears"); myString.Add("99.02|apples|pears"); myS

我可能用了错误的措辞,但我有一个简单的列表,基于拆分,我希望从第一列中得到最大的值

这是密码

   List<string> myString = new List<string>();
        myString.Add("100.02|apples|pears");
        myString.Add("22.02|apples|pears");
        myString.Add("99.02|apples|pears");
        myString.Add("88.02|apples|pears");
        myString.Add("77.02|apples|pears");
        myString.Add("66.02|apples|pears");
我基本上是在|上拆分,然后将第一列转换为十进制。我想得到最大的5行,这将排除22.02。我尝试过排序和排序,但它们不起作用,因为字符串长度不同

谢谢

这将起作用:

List<string> myString = new List<string>();
myString.Add("100.02|apples|pears");
myString.Add("22.02|apples|pears");
myString.Add("99.02|apples|pears");
myString.Add("88.02|apples|pears");
myString.Add("77.02|apples|pears");
myString.Add("66.02|apples|pears");

var res = myString.Select(s => new
{
    num = decimal.Parse(s.Split('|')[0]),
    str = s
}).OrderByDescending(g => g.num).Take(5).Select(s => s.str);
res.Dump();
没有任何错误检查,但它会给出以下结果:

100.02 |苹果|梨 99.02 |苹果|梨 88.02 |苹果|梨 77.02 |苹果|梨 66.02 |苹果|梨

您可以使用。选择对列表中的每个元素执行操作

那么结果[0]将等于100.02 |苹果|梨helloworld

如果使用s.Split“|”,则每个元素都会得到字符串的string[]数组。可以使用.First获取第一个元素

把这一切结合起来,

var result = myString.Select(s => s.Split('|').First()) 

我将把它作为一个练习,以了解如何将字符串解析为十进制

Rob-你如何迭代它?ToArray?JoshuaLong你可以用res{…}做些什么。但是是的,ToArray、ToList等都会立即评估可枚举项
var result = myString.Select(s => s.Split('|').First())