c# Linq -如何从列表中选择前5行分割第一个值
本文关键字:string 5行 分割 第一个 选择 Linq 列表 | 更新日期: 2023-09-27 18:11:33
我可能写错了,但我有一个简单的列表,基于分割,我想从第一列得到最大的值。
代码
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 |苹果梨子
您可以使用.Select
对列表中的每个元素执行操作。
var result = myString.Select(s => s + "-helloworld").ToArray();
则result[0]
等于"100.02|apples|pears-helloworld"
如果您使用s.Split('|')
,那么您将为每个元素获得一个string[](字符串数组)。可以使用.First()
取第一个元素。
把它们连在一起,
var result = myString.Select(s => s.Split('|').First())
我将把它作为练习来弄清楚如何将字符串解析为小数。