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

LINQ中List<Article>与List<int>取交集时IntersectBy结果异常如何解决

问题原因

IntersectBy属于LINQ的集合交集运算方法,遵循集合操作的去重语义:对于每个匹配到的公共键,只会返回源序列中第一个对应的元素,不会返回所有同键的匹配项。这就是你最终只拿到1条结果的根本原因,它并不适用于「按给定ID列表筛选所有匹配元素」的场景。

正确实现方案

直接使用Where做条件过滤,通过Contains判断当前文章的CategoryID是否存在于目标分类ID列表即可,代码如下:

var newArticleList = articles
    .Where(a => filteredCategoriesID.Contains(a.CategoryID))
    .ToList();

如果待匹配的分类ID列表数据量较大,可以先将列表转为HashSet<int>优化查找性能,把Contains操作的时间复杂度从O(n)降到O(1),适合大数据量场景:

HashSet<int> validCategoryIds = new HashSet<int>(filteredCategoriesID);
var newArticleList = articles
    .Where(a => validCategoryIds.Contains(a.CategoryID))
    .ToList();

运行以上代码即可得到你预期的结果:共5条CategoryID为1、2的文章记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:51:20