는,이처럼 보였다 :.Net Dictionary가 정렬 된 것처럼 보이는 이유는 무엇입니까?
return list.OrderBy(item => item.Order).ToDictionary(item => item.Id);
나는 즉시 Dictionary
이 해시 테이블이기 때문에 자신의 코드가 아닌 잘못된 것을 내 동료에게 - 정렬 된 컬렉션. 그는 주문 보존 수집 물을 사용하거나, 나중에 그가 foreach
으로 사전에서 읽을 때 항목을 정렬해야한다고 말했다.
하지만 그는 대답했습니다. "아니오, 아니요, 코드가 맞습니다.보세요 : OrderBy
을 추가 했으므로 항목이 올바른 순서로 나타납니다."
테스트 케이스에서 그는 옳았다. 다른 데이터를 시도했지만 여전히 정렬되었습니다!
나는이 행동에 의지해서는 안되지만 그는 동의하지 않는다. 나는 왜 그런지 설명하는 데 어려움을 겪고있다. 게다가 나는 왜 주문이 그렇게 자주 유지되는 것일까에 관심이있다.
내 질문은 ... Dictionary
은 근본적으로 정렬되지 않은 컬렉션인데 왜 분류 된 것처럼 보입니까?
사전 <> 컬렉션이 정렬되지 않은 것을 보장을 제공하지 않습니다 . 목적에 따라 무작위로 사용하지 않습니다. 예, 코드가 잘못되었습니다. –
예 저스틴, 이것은 복제본입니다. 당신이 연결 한 질문에 대한 답은 제가 원했던 것입니다. 사전에 관한 많은 질문 중에서 복제본을 어떻게 빨리 찾을 수 있습니까? 나는 수색하고 그것을 발견 할 수 없었다. 고맙습니다! –
모르겠다. (이것이 내가 코멘트로 올리는 이유이다.)하지만 SQL과 같다고 상상한다 :'SELECT'에 의해 반환 된 행은'ORDER BY' 절이 포함되지 않는 한 불특정 순서로 반환된다. . 특히 작은 데이터 세트에서 행이 삽입 된 순서대로 반환되기 때문에 많은 사람들이 이동합니다. (나는 사람들이 결과의 순서에 대해 신경을 쓰면 사람들에게 '주문'을 포함 시키라고 항상 말합니다. 그것 없이도 작동 할 수도 있지만 무서울 수도 있습니다.) –