如何按子字符串值对列表项进行排序? 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)。
我有一个列表,其中包含一些订单的信息
订单信息:
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)。