시퀀스로 정렬 된 테이블의 이름을 가진 List (myList)가 있습니다. 나는 테이블과 값으로 EntityObject를 가지고있는 구조체 키와 사전을 가지고목록 컬렉션에서 요소와 관련된 사전을 정렬하는 방법 C#
다음List<MyObject>[0] = MyObject.Sequence = 0, MyObject.Table = "Cat"
List<MyObject>[1] = MyObject.Sequence = 1, MyObject.Table = "Dog"
List<MyObject>[2] = MyObject.Sequence = 2, MyObject.Table = "Bird"
List<MyObject>[3] = MyObject.Sequence = 3, MyObject.Table = "Fish"
, 그래서이 : MyObject를 2 개 속성을 표 (문자열) 및 시퀀스 (INT)
List<MyObject>
예를 가지고 사전은 이미 그래서 테이블 순서를 포함하도록 사전을 다시 목록에 따라 내 사전을 주문하려면이
dict[0] = key (ID = 1, Table = "Cat"), EntityObject = Cat
dict[1] = key (ID = 2, Table = "Dog"), EntityObject = Dog
dict[2] = key (ID = 3, Table = "Bird"), EntityObject = Bird
dict[3] = key (ID = 4, Table = "Fish"), EntityObject = Fish
dict[4] = key (ID = 5, Table = "Cat"), EntityObject = Cat
dict[5] = key (ID = 6, Table = "Dog"), EntityObject = Dog
dict[6] = key (ID = 7, Table = "Cat"), EntityObject = Cat
dict[7] = key (ID = 8, Table = "Dog"), EntityObject = Dog
dict[8] = key (ID = 9, Table = "Cat"), EntityObject = Cat
dict[9] = key (ID = 10, Table = "Fish"), EntityObject = Fish
같은 10 개 개체 값 가득 그것은이
dict[0] = key (ID = 1, Table = "Cat"), EntityObject = Cat
dict[1] = key (ID = 5, Table = "Cat"), EntityObject = Cat
dict[2] = key (ID = 7, Table = "Cat"), EntityObject = Cat
dict[3] = key (ID = 9, Table = "Cat"), EntityObject = Cat
dict[4] = key (ID = 2, Table = "Dog"), EntityObject = Dog
dict[5] = key (ID = 6, Table = "Dog"), EntityObject = Dog
dict[6] = key (ID = 8, Table = "Dog"), EntityObject = Dog
dict[7] = key (ID = 3, Table = "Bird"), EntityObject = Bird
dict[8] = key (ID = 4, Table = "Fish"), EntityObject = Fish
dict[9] = key (ID = 10, Table = "Fish"), EntityObject = Fish
처럼 나는 에 새 사전을 foreach 문으로 루프를 방지 한 후 다시 원하는 다음 기존에 복사 또는 복제. 그래서 나는 잠시 동안이 비행을 시도했지만, 나는 항상 같은 정렬되지 않은 목록을 가졌습니다. 어쩌면 내가 Sort 또는 OrderBy 메서드가 누락되었지만 누군가이 문제를 해결하는 데 도움을 줄 수 있습니다. 제안?
Dictionary<MyStruct, EntityObject> dict = this.GetDictionary()
.ToList()
.FindAll(x => x.Key.Table == myList.Find(y => y.Table == x.Key.Table).Table)
.ToDictionary(a => a.Key, b => b.Value);
참고 :
얘들 아 내가 이미 사전 정렬 할 수 없음을 알고 있지만 당신이 내 방식을 보면, 내가 메모리의 요소를 주문하고 지정하려고 새 사전을 다시 해요 그것은 "dict"합니다. 나는 최근에 수정 아무것도하지만, 여전히 만든
--- 수정 ---. 도와주세요.
Dictionary<MyStruct, EntityObject> dict = this.GetDictionary() .ToList() .OrderBy(x => x.Key.Table == myList .Find(z => z.Table == x.Key.Table).Table) .ToDictionary(x => x.Key, y => y.Value);
'이미 사전을 분류 할 수 없다는 것을 알고 있습니다. '...'나는 요소를 순서화하려고하는 새 사전을 만들고 있습니다. '이제 문제가 무엇인지 확인해야합니다. 사전에는 주.이 없으므로 사전에 삽입 한 순서는 메모리에 h 치된 f 식에 영향을주지 않습니다. 설명하는 것처럼 동작하도록하려면 'OrderedDictionary' 또는 KeyedCollection [Dennis가 설명하는]과 같은 다른 것으로 전환해야합니다 (http://stackoverflow.com/a/19880082/80274). –