c# - 如何根据匹配名称将数据列表类型值替换为字典值
问题描述
我有一本字典和数据列表
lstData
如果Type
字典中存在,我只需要数据列表中的数据。我需要用字典
Type
中的名称替换名称。带有“X”和带有.lstData
type1
type3
type3
var dictionary = new Dictionary<string, string> { { "type1", "X" }, { "type3", "type3" } }; var lstData = new List<Data> { new Data {Name = "N1", Type = "type1"}, new Data {Name = "N1", Type = "type2"}, new Data {Name = "N2", Type = "type3"}, };
通过以下查询,我能够实现第 1 部分),如何做第 2 部分)?
var x = lstData.Where(a => new List<string>(dictionary.Keys).Any(b => b == a.Type));
预期输出应该是,
x = new List<Data>
{
new Data {Name = "N1", Type = "X"},
new Data {Name = "N2", Type = "type3"},
};
解决方案
使用ContainsKey
会更有效,尤其是对于大型数据集。
然后,您可以使用Select
来创建新Data
对象:
var x = listData
.Where(d => dictionary.ContainsKey(d.Type)) // Part 1
.Select(d => new Data { Name = d.Name, Type = dictionary[d.Type] }) // Part 2
.ToList();
推荐阅读
- html - 打开 mat-select 对话框时聚焦特定的 mat-option 项?
- azure - 带有 scriptPath 选项的 Azure DevOps AzureCLI 任务无法通过身份验证来创建 Azure 容器实例
- excel - 列必须包含值;如果是,则该值的列偏移量必须包含另一个值
- swift - 组合布局和损坏的自身大小的单元格
- excel - 有没有办法使用 vba 在用户表单中的组合框中的所有值之间切换?
- python - 将子域匹配到域 python sqlalchemy
- module - Prestashop v.1.7 我无法访问菜单的子类别
- browser - WebGL指纹有多独特
- c++ - Qt c++ QPainter QVector 与 QPoint
- console - 是否可以将控制台命令保存为收藏夹或键盘快捷键,以便我可以快速连续多次运行它?