如何按子字符串值对列表项进行排序? C#

How to sort list items by substring value ? c#

我有一个列表,其中包含一些订单的信息

订单信息:

STORAGEA ----- 2,311 € ----- 8 PCS ----- 08:55:02.933
COMPANYX ----- 6,435 € ----- 80 PCS ----- 08:59:07.751
FACTORYT ----- 22,20 € ----- 80 PCS ----- 08:45:04.686

如您所见,我的列表项排序不正确,因为订购时间不一

期望的输出是:

FACTORYT ----- 22,20 € ----- 80 PCS ----- 08:45:04.686
STORAGEA ----- 2,311 € ----- 8 PCS ----- 08:55:02.933
COMPANYX ----- 6,435 € ----- 80 PCS ----- 08:59:07.751

我当前的代码:

using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

   

        private void button1_Click_1(object sender, EventArgs e)
        {
            List<string> mylist = new List<string>(new string[] { "STORAGEA ----- 2,311 € ----- 8 PCS ----- 08:55:02.933",
 "COMPANYX ----- 6,435 € ----- 80 PCS ----- 08:59:07.751", 
"FACTORYT ----- 22,20 € ----- 80 PCS ----- 08:45:04.686" });

            listBox1.DataSource = mylist;
        }
    }
}

感谢你们的帮助:)

请阅读问题的评论。

想象一下,您必须使用适当的数据类型处理特定对象。

这是示例 class:

class Order
{
    public string CompanyName { get; set; }
    public double Price { get; set; }
    public int CountOfPieces { get; set; }
    public DateTime OrderTime { get; set; }
}

您可以通过这种方式将 List<string>“转换”为有序 List<Order>

List<Order> myProperData = mylist
    .Select(x=>x.Split(new string[]{" ", "-", "€"}, StringSplitOptions.RemoveEmptyEntries))
    .Select(x=> new Order()
    {
        CompanyName = x[0],
        Price = Convert.ToDouble(x[1]),
        CountOfPieces = Convert.ToInt32(x[2]),
        OrderTime = Convert.ToDateTime(x[4])
    })
    .OrderBy(x=>x.OrderTime) //sort orders by OrderTime!
    .ToList();

如您所见,myProperData 是订单列表。您可以按照自己的方式管理数据 (add/remove/sort)。

详情请见:Classes - C# Programming Guide