按指定顺序对字符串进行排序

Cre*_*iff 2 c# sorting

我需要找出如何按预定义模式对某些数据进行排序.

可以说我有一些字符串,代表产品信息,例如

产品1,红色,70/n

产品6,蓝色,90/n

产品3,​​红色,50/n

产品9,白色,33/n

我通过昏迷字符串拆分将这些字符串分开,并将它们存储在不同的数组(名称,颜色,价格),然后存储在具有相同列的DataTable中.

我可以使用颜色按颜色订购创建的行:

DataView.sort = "color" 
Run Code Online (Sandbox Code Playgroud)

或者LINQ用

DataRow[] dr = table.Select().OrderBy(u=>u[color]).ToArray();
DataTable sortedtable = dr.CopyToDataTable(); 
Run Code Online (Sandbox Code Playgroud)

然而,这只是简单的排序,asc/desc,基于字母表.

我想用预定义的模式实现排序.在示例中,项目顺序将由颜色按红色,黑色,蓝色,白色顺序定义.

我能做些什么简单的事吗?我认为这可以通过检查每一行颜色并将其与预定义颜色列表进行比较,然后根据此顺序构建新的Array/DataTable.但是我觉得这是一种微弱的方法.

Tim*_*ter 5

您可以将订单存储在另一个集合中,然后使用IndexOf:

var colorOrderList = new List<string>{"red", "black", "blue", "white"};
table = table.AsEnumerable()  
    .OrderBy(row => colorOrderList.IndexOf(row.Field<string>("color")))
    .CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)