You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在LINQ函数可检查对象列表的属性是否匹配字典值?

解决方案

首先你现有代码里存在笔误:循环变量是item,但判断逻辑里写的是object.Attribute,应该修正为item.Attribute。

针对你的需求,提供两种优化方案:

1. 简化代码(LINQ写法)

直接用LINQ的Where方法替代foreach循环,一行代码即可完成筛选:

var filteredList = model.Where(item => dictionary.Values.Contains(item.Attribute)).ToList();

2. 提升查找性能

如果字典元素数量较多,或者待筛选的集合规模较大,直接调用dictionary.Values.Contains会每次执行线性遍历(时间复杂度O(n)),效率偏低。建议先将字典的值转换为HashSet<string>,利用HashSet的O(1)快速查找特性:

// 仅需执行一次的初始化操作
var valueLookupSet = new HashSet<string>(dictionary.Values);
// 基于HashSet完成高效筛选
var filteredList = model.Where(item => valueLookupSet.Contains(item.Attribute)).ToList();

这种方式既简化了代码结构,又能在数据量较大时显著提升运行效率。

内容的提问来源于stack exchange,提问作者Drinkbeergetmoney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:40:28