列出<string>复杂排序

dha*_*rdy 10 c# linq sorting lambda arraylist

我有一个List<string>尺寸,比如XS,S,M,L,XL,XXL,UK 10,UK 12等

我想要的是强制命令是上面的命令,无论列表中的项目顺序如何,我想我需要一个IComparable运算符但不确定.

理想情况下,我想让另一个List具有正确的顺序,它可以在列表中引用它的'place'并重新排序,如果它不存在,它将默认为AZ

D S*_*ley 18

按照您希望它们的顺序创建一个大小的数组,然后按照它们在该数组中的大小位置对衬衫进行排序:

string[] sizes = new [] {"XS", "S", "M", "L", "XL", "XXL", "UK 10", "UK 12"};

var shirtsInOrder = shirts
                        .OrderBy(s=>sizes.Contains(s) ? "0" : "1")  // put unmatched sizes at the end
                        .ThenBy(s=>Array.IndexOf(sizes,s))  // sort matches by size
                        .ThenBy(s=>s); // sort rest A-Z
Run Code Online (Sandbox Code Playgroud)