是否有更简单的方法来编写以下内容? I.E.,没有lambda。
var strings = new[] { "Alabama", "Mississippi", "Louisiana" };
var ordered = strings.OrderBy(x => x);
似乎应该可以,因为string
实现了IEquatable<string>
。
答案 0 :(得分:6)
这里IComparable
比IEquatable
更重要,但有可能:
Array.Sort(strings);
这可行,因为strings
已经是一个数组。既然你要求任何IEnumerable:
var ary = strings.ToArray();
Array.Sort(ary);
注意额外变量在第二个示例中也很重要,因为Array.Sort()
对传递的实际对象进行排序而不返回结果,并且调用.ToArray()
创建了一个新的数组,然后将其丢弃。没有额外的变量,你就会失去工作。
您可以使用List<T>
对象上的类似排序方法。
您也可以为此制作自己的扩展方法:
public static class MyExtensions
{
public static IOrderedEnumerable<T> Sort(this IEnumerable<T> items) where T : IComparable
{
return items.OrderBy(i => i);
}
}
现在你可以说:
var ordered = strings.Sort();