여기에 제 설정이 있습니다.C# List <T> OrderBy는 항상 null을 반환합니다.
public class ItemList : List<Item>
{
public void Load() {...}
public void Save() {...}
}
로드는 ITEMLIST
내가 다음 우선 순위에 의해 항목 목록을 주문하려고을 채우는 XML 파일에서 읽습니다. 이건 int인가? 그러나 테스트 목적을 위해 모든 항목의 값이 다릅니다.
ItemList itemList = new ItemList();
itemList.Load();
ItemList newItemList = itemList
.OrderBy(item => item.Priority) as ItemList;
return newItemList;
위의 newItemList는 항상 null입니다. itemList의 개수는 7입니다. 나는 트리플 체크를했고 itemList 인스턴스의 모든 항목에 우선 순위가 설정되어 있습니다.
내가 뭘 잘못하고 있니?
나는 또한 시도했다 ...
ItemList newItemList = itemList
.OrderBy(item => item.Priority)
.ToList() as ItemList;
아무것도 작동하는 것 같다.
미리 감사드립니다.
내가 자주 사용하지 않는다면 Sort를 사용하지 않는 것이 좋습니다. 왜냐하면 내가 자주 사용하기 때문에 정렬하고자하는 모든 항목에 대해 CompareTo 메소드를 구현해야하기 때문입니다. – Altonymous
BTW,이 솔루션을 사용해 볼 때 CompareTo가 Priority 이외의 유효한 메서드가 아닙니다. 우선 순위가 int입니까? – Altonymous
알았어! itemList.Sort ((x, y) => x.Priority.HasValue.CompareTo (y.Priority)); – Altonymous