mini-software / MiniExcel

Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet (support Linux, Mac)
https://www.nuget.org/packages/MiniExcel/
Apache License 2.0
2.69k stars 329 forks source link

MiniExcel.Query.Cast<IDictionary<string, object>>() ,其中IDictionary的顺序是确定的吗? #495

Open 15951836388 opened 1 year ago

15951836388 commented 1 year ago

IDictionary的顺序应该是乱序的吧?

但 MiniExcel的每个row,遍历打印时,却顺序是固定的。

能解释一下,这是为什么嘛?

AlexeiNaabal commented 9 months ago

乱序是因为你无法确定新元素会进入IDictionary的哪个哈希桶,但是一旦放进去,对IDctionary来说,内部的元素排序就确定了。Enumerable遍历顺序就是遍历每个桶的每个元素,你可以认为遍历操作顺序是固定的,如果哈希桶内的元素不再发生增删改,那么它们的相对顺序就是确定的,那么固定的遍历操作顺序+确定的元素相对顺序,你就能得到固定的遍历结果。