vb.net - 如何在 VB.net 中使用 ListB 按 ListB 项的顺序对 CollectionA 进行排序
问题描述
我将 Dim 人作为 List(of Persons) 字段,例如 Name , City 有一个 City Dim City 作为 New List(Of String)(New String() {"kolkata", "Delhi", "Chennai"}) 的列表
现在我想订购 Order of City 中的人员列表。即简单地说,如果一个 City 是 Person 的 kolkata 。因此,人员名单应显示加尔各答的第一名,德里第二名和钦奈。
我如何在 vb.net 中实现这一点
例如。Dim abc = from m in people join n in City on m.City 等于 n order by n (index) select m
解决方案
这具有相当可怕的效率:
persons.OrderBy(Function(p) city.IndexOf(p.City) )
如果你有很多人和/或城市,最好先把城市列表变成字典:
Dim cityD = city _
.Select(Function(s, i) New With { Key .city = s, .index = i }) _
.ToDictionary(Function(x) x.city, Function(x) x.index)
persons.OrderBy(Function(p) cityD(p.City) )
我认为这是语法..不能轻易检查..当我在电脑上时会更新
它基本上构建了一个以城市名称为键、列表索引为值的字典。以这种方式查找要快得多。您的城市列表必须没有重复的城市名称!重复是区分大小写的,所以 "Kolkata" <> "kolkata"
推荐阅读
- android-studio - 模拟器位置刺激器突然不工作android studio
- azure-data-factory - 来自多个来源的数据并根据 Lookup SQL 数据决定目的地
- google-apps-script - 使用 VLOOKUP 检测单元格上的编辑 - Google 表格
- typescript - 无法使用 Typescript 项目引用构建 Vue.js 应用程序
- jenkins - Teamcity 到 Jenkins 迁移
- singleton - 放置多个附件时出现 Odoo Singleton 错误
- android - 从图库中选择图像后出现空白屏幕
- css - 更改文本字段 onFocus mui 的背景颜色
- mysql - 更新/翻译字段mysql值的最佳方法
- torch - torch.save() 会覆盖之前保存在同一路径中的模型吗?