다음과 같은 간단한 방법으로 작성할 수 있습니까? I.E., 람다없이. 이 가능해야 같은 string
가 IEquatable<string>
을 구현하기간단한 IEnumerables에 대해 람다가없는 OrderBy
var strings = new[] { "Alabama", "Mississippi", "Louisiana" };
var ordered = strings.OrderBy(x => x);
가 보인다.
다음과 같은 간단한 방법으로 작성할 수 있습니까? I.E., 람다없이. 이 가능해야 같은 string
가 IEquatable<string>
을 구현하기간단한 IEnumerables에 대해 람다가없는 OrderBy
var strings = new[] { "Alabama", "Mississippi", "Louisiana" };
var ordered = strings.OrderBy(x => x);
가 보인다.
그것은 여기 이상의 IEquatable
을 중요한 IComparable
하지만이 가능하다 : strings
이미 배열이기 때문에
Array.Sort(strings);
이 작동합니다. 당신이 어떤 IEnumerable을 요구하기 때문에 : Array.Sort()
결과를 반환하지 않고 전달되는 실제 객체를 정렬하고 호출하기 때문에 여분의 변수가이 두 번째 샘플에서 중요하다
var ary = strings.ToArray();
Array.Sort(ary);
주, .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();
'의 고유 한 값은'var ordered = new SortedSet (strings);'Array.Sort (strings.ToArray())'나에게는 어리석은 것처럼 보인다. 그것은 배열을 만들고, 그것을 제자리에 정렬 한 다음 결과를 버립니다. –
이미 내 답변에 추가했습니다 :) –
사실,하지만이 새로운 배열을 만듭니다. 정적 IEnumerable
'list.Sort(); '어쩌면? –
왜 그것을 제거하려고합니까 ?? 당신은 긍정적 인 사고 방식에 있어야합니다. 이'(x => x)'는 술에 취한 채 슬라이딩 글라스 문을 걸어 들어오고있는 이모 지입니다. – Will
람다가없는 OrderBy는 주문이 아닙니다 ** By ** :] – Slai