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())