我的IEnumerable<string>
值为:
...等
我想按字母顺序对它们进行组织,但要保留两位数字(例如上面的10.0和10.1的数字)低于单位数的值。换句话说,排序后应该如下所示:
我尝试了一个简单的IEnumerable<string>.OrderBy(x => x, StringComparer.CurrentCultureIgnoreCase)
,但在这种情况下,这并不是很有效。
另外请注意,pp
和kp
部分可以在其中包含点,如果您正在考虑拆分字符串。
答案 0 :(得分:4)
只需创建自己的比较器并将其传递给OrderBy
的重载:https://msdn.microsoft.com/de-de/library/bb549422(v=vs.110).aspx
例如:
IEnumerable<string>.OrderBy(x => x, new MyComparer());
您自己的比较器可以是实现接口MyComparer
的类(在上面的示例中,我将其命名为System.Collections.Generic.IComparer<string>
)。将比较逻辑放入方法Compare
。
class MyComparer : IComparer<string>
{
public int Compare(string x, string y)
{
// your logic here
}
}
// ...
IEnumerable<string> myListOfStrings = ...;
myListOfStrings.OrderBy(x => x, new MyComparer());