有人問我在此查詢被指定爲它的數據源組合框添加一個「ALL」項時訂購,項目「ALL」應該是在控制看到的第一個如何使用ToDictionary()
Dim qryEmp = From emp In db.Members.ToList
Order By emp.LogonId Ascending
Select New GPUserQueryResult With {
.LoginId = emp.LogonId,
.FullName = GetUserName(emp.LogonId)
}
我最終使用的代碼是這樣的:
Dim allUser() As GPUserQueryResult = {New GPUserQueryResult With {.LoginId = -1, .FullName = AllValues}}
Dim addEmpty As IEnumerable(Of GPUserQueryResult) = allUser
Dim allRecs As IEnumerable(Of GPUserQueryResult) = addEmpty.Union(qryEmp)
EmpList = allRecs.ToDictionary(Function(x) x.LoginId, Function(x) x.FullName)
起初,雖然我嘗試這樣:
Dim allUser() As GPUserQueryResult = {New GPUserQueryResult With {.LoginId = -1, .FullName = AllValues}}
Dim addEmpty As IEnumerable(Of GPUserQueryResult) = allUser
Dim allRecs As IEnumerable(Of GPUserQueryResult) = qryEmp.Union(addEmpty)
EmpList = allRecs.ToDictionary(Function(x) x.LoginId, Function(x) x.FullName)
EmpList.Keys.OrderBy(Function(x) x)
卜t「ALL」項總是最後一項,即使我試圖使用OrderBy方法,有人可以解釋爲什麼?如果這是實現目標的最佳方式
字典是鍵/值對的_unordered_集合。如果您想訂購,請使用['OrderedDictionary'](http://msdn.microsoft.com/zh-cn/library/system.collections.specialized.ordereddictionary.aspx)或推出自己的訂單。 –
我知道字典無法排序,我想我認爲在Keys上有可能的OrderBy,它可以在容器中排序Key值。 – CheGueVerra
在集合上使用'OrderBy()'等方法不會對其進行修改,它只會創建集合的視圖,以便在迭代時應用。如果你迭代了'OrderBy()'調用的結果,你會看到「有序」的鍵。 –