微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何按子字符串值对列表项进行排序? 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,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 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是订单列表。您可以按照自己的方式管理数据(添加/删除/排序)。

有关更多详细信息,请参见:Classes - C# Programming Guide

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。