如何使用LINQ根据selectedValue变量移除listB中的指定元素
使用LINQ实现根据条件过滤列表元素
当然有可行的LINQ解决方案,LINQ的查询能力刚好能满足这个需求,下面分两种常见场景给出实现方式:
场景1:生成新的过滤后集合(推荐,符合LINQ设计理念)
LINQ的核心是查询并返回新序列,这种方式不会修改原列表,而是生成符合条件的新集合:
string selectedValue = "steel"; // 可切换为"iron" var listB = new List<int> { 1, 21, 45 }; var filteredList = selectedValue switch { "iron" => listB.Where(num => num != 21).ToList(), "steel" => listB.ToList(), // 复制原列表所有元素 _ => listB.ToList() // 处理未预期的selectedValue值 };
说明
Where(num => num != 21)会筛选出所有不等于21的元素,当selectedValue为"iron"时生效;ToList()将LINQ返回的延迟执行序列转换为List<int>,立即生成新集合;- 使用switch表达式让条件判断更简洁清晰。
场景2:直接修改原列表
如果需要直接修改原listB而不是生成新集合,可以用LINQ定位要移除的元素,再执行移除操作:
string selectedValue = "steel"; // 可切换为"iron" var listB = new List<int> { 1, 21, 45 }; if (selectedValue == "iron") { // 用LINQ筛选出所有需要移除的元素(这里是值为21的元素) var itemsToRemove = listB.Where(num => num == 21).ToList(); foreach (var item in itemsToRemove) { listB.Remove(item); } }
说明
- 先通过LINQ查询得到所有要移除的元素并转成新列表,避免在遍历原列表时直接修改导致的异常;
- 遍历新列表中的元素,逐个从原listB中移除。
内容的提问来源于stack exchange,提问作者Tommer
相关产品推荐
相关产品推荐

