가능한 중복 : How to sort an array of FileInfo[] C#정렬 객체의 속성에 기초하여 강하게 타이핑 객체 배열
중복 I []는 오브젝트의 배열을위한이 어떤 이유에서리스트 <>으로 바꿀 수 없는데, 객체의 1 필드에있는 값을 기준으로 객체의 배열 []을 정렬 할 수 있습니까? 예를 들어
arrayOfFruit[] fruit;
fruit.sort(name);
감사
가능한 중복 : How to sort an array of FileInfo[] C#정렬 객체의 속성에 기초하여 강하게 타이핑 객체 배열
중복 I []는 오브젝트의 배열을위한이 어떤 이유에서리스트 <>으로 바꿀 수 없는데, 객체의 1 필드에있는 값을 기준으로 객체의 배열 []을 정렬 할 수 있습니까? 예를 들어
arrayOfFruit[] fruit;
fruit.sort(name);
감사
를 사용하여 배열 .. ::.
당신은의 매개 변수로 IComparer을 사용할 수 있습니다 (IComparer를 배열) 방법을 정렬 정렬
void SomeMethod()
{
Fruit fruits[] = GetArrayOfFruit();
Array.Sort(fruits, FruitNameComparer);
}
int FruitNameComparer(Fruit lhsOfQEquals, Fruit rhsOfEquals)
{
return String.Compare(lhsOfQEquals.Name, rhsOfEquals.Name);
}
선택자 및 비교 자을 명확히 구분하려면이 도우미 클래스를 사용할 수 있습니다. 셀렉터를 사용하는 오버로드 집합을 Array.Sort
에 부여하는 "클래스 확장 메서드"를 사용할 수 없다는 것은 나쁘지 않습니다. 사용 중
public static class SelectingComparer<T>
{
public static IComparer<T> Create<U>(Func<T, U> selector)
{
return new SelectingComparerImpl<U>(selector, null);
}
public static IComparer<T> Create<U>(Func<T, U> selector, IComparer<U> comparer)
{
return new SelectingComparerImpl<U>(selector, comparer.Compare);
}
public static IComparer<T> Create<U>(Func<T, U> selector, Comparison<U> comparison)
{
return new SelectingComparerImpl<U>(selector, comparison);
}
private class SelectingComparerImpl<U>
: IComparer<T>
{
private Func<T, U> selector;
private Comparison<U> comparer;
public SelectingComparerImpl(Func<T, U> selector, Comparison<U> comparer)
{
if (selector == null)
throw new ArgumentNullException();
this.selector = selector;
this.comparer = comparer ?? Comparer<U>.Default.Compare;
}
public int Compare(T x, T y)
{
return this.comparer(this.selector(x), this.selector(y));
}
}
}
: 며칠 전에서
public class Testing
{
public void Foo()
{
FileInfo[] files = new FileInfo[30];
// FILL THE FILE ARRAY
Array.Sort(files, SelectingComparer<FileInfo>.Create(file => file.Name));
Array.Sort(files, SelectingComparer<FileInfo>.Create(file => file.Name, StringComparer.OrdinalIgnoreCase));
}
}
중복 ... 검색 ... –