You need to enable JavaScript to run this app. C# LinQ中FindAll函数如何使用List集合实现多值筛选
优惠活动
大模型
产品
解决方案
定价
更多

C# LinQ中FindAll函数如何使用List集合实现多值筛选

实现方案

完全可以实现你要的多ID筛选效果,C#中没有直接在lambda表达式中使用in关键字的语法,我们可以借助List<T>.Contains()方法实现完全等价的逻辑。

注意原有代码的小问题

你现有单参数筛选的代码存在语法错误:x.LocationId= locationId是赋值操作,不是相等判断,正确的单参数筛选写法应为x.LocationId == locationId。

1. 匹配你原有写法的实现(已加载到内存的集合)

如果你确实需要先把全量数据加载到内存再筛选,写法如下:

// 入参为 List<int> locations
items = ctx.listName.ToList().FindAll(x => locations.Contains(x.LocationId));

2. 推荐的高性能写法(针对EF/EF Core上下文场景)

原有写法先调用ToList()会把整张表的数据全部加载到内存再筛选,性能极低。建议把过滤逻辑放在ToList()之前,让筛选操作直接在数据库层面执行:

// 入参为 List<int> locations
items = ctx.listName.Where(x => locations.Contains(x.LocationId)).ToList();

可选:空列表兼容逻辑

如果业务要求当传入的locations是空列表时返回所有数据,可以加一层判断:

items = ctx.listName.Where(x => !locations.Any() || locations.Contains(x.LocationId)).ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:30:03