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

如何使用LINQ的Contains方法比较列表中的两组字段?

双字段列表匹配的正确实现方式

你原来的代码无法运行的原因有两个:一是Contains方法仅接受单个元素参数,不能直接传入两个字段;二是存在拼写错误(ControllName应为ControllerName)。以下是两种可行的实现方案:

方案1:使用Any直接判断双字段匹配

这种方式无需提前创建中间集合,逻辑更直观:

var comparer = model.ActionList.Where(i => 
    !accessActionsList.Any(l => 
        l.ActionName == i.AccessActionName && l.ControllerName == i.ControllerName));

方案2:通过匿名类型集合+Contains匹配

利用C#匿名类型自动实现的Equals和GetHashCode方法,先将目标列表的双字段转为匿名类型集合,再进行匹配:

// 提取accessActionsList的双字段匿名类型集合
var accessActionPairs = accessActionsList.Select(l => new { l.ActionName, l.ControllerName });
// 筛选model.ActionList中不在该集合内的项
var comparer = model.ActionList.Where(i => 
    !accessActionPairs.Contains(new { ActionName = i.AccessActionName, ControllerName = i.ControllerName }));

注意:两种方案都要确保字段名称(如ControllerName的拼写)和数据类型完全一致,否则会导致匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:39:57