문제

여기 내 설정이 있습니다.

public class ItemList : List<Item>
{
  public void Load() {...}
  public void Save() {...}
}

XML 파일에서로드를 읽으려면 itemList를 채우십시오.

그런 다음 우선 순위로 항목 목록을 주문하려고합니다. 이것은 int입니까? 그러나 테스트 목적으로 모든 항목의 값이 다릅니다.

ItemList itemList = new ItemList();
itemList.Load();

ItemList newItemList = itemList
                        .OrderBy(item => item.Priority) as ItemList;

return newItemList;

위의 NewItemList는 항상 무효입니다. ItemList의 카운트는 7입니다. 트리플 확인했으며 ItemList 인스턴스의 모든 항목에는 우선 순위가 설정되어 있습니다.

내가 뭘 잘못하고 있죠?

나는 또한 시도했다 ...

ItemList newItemList = itemList
                        .OrderBy(item => item.Priority)
                        .ToList() as ItemList;

아무것도 작동하지 않는 것 같습니다.

미리 감사드립니다!

도움이 되었습니까?

해결책

Orderby 또는 Tolist는 Itemlist를 반환하지 않으므로 Joseph가 지적한 것처럼 캐스팅은 Null을 반환합니다.

당신이 상속 할 때 List<T> 클래스, 정렬 방법을 사용하여 정렬 할 수 있습니다.

ItemList itemList = new ItemList();
itemList.Load();
itemList.Sort((x, y) => x.Priority.CompareTo(y.Priority));
return itemList;

다른 팁

문제는 OrderBy가 ItemList를 반환하지 않고 iOrderEdEnumerable을 반환하고 Tolist ()가 ItemList를 반환하지 않고 목록을 반환한다는 것입니다. 어느 쪽이든, 당신은 그들이 아닌 항목 목록에 둘 다 캐스팅하려고합니다. 그래서 당신은 null을 얻습니다.

ItemList someList = (new ItemList {new Item(2), new Item(1), new Item(3)});

//this returns an IOrderedEnumerable<Item>
var result = someList.OrderBy(i => i.Priority); 

//this returns a List<Item>
var otherResult = someList.ToList(); 

나는 당신의 문제가 "ItemList"라고 생각합니다.

LINQ 연산자는 NewItemList 객체에서 내내 작동하지 않습니다. 그들은 새로운 물체를 만들고 반환합니다. 장소에서 정렬을하려면 List <>의 정렬 () 메소드를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top