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。我试过排序和排序,但他们不工作,因为字符串是不同的长度。

谢谢!

c# Linq -如何从列表中选择前5行<string>分割第一个值

可以:

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

我将把它作为练习来弄清楚如何将字符串解析为小数。