C#技术问询:如何检查列表项是否在键值中并通过LINQ过滤数据
解决方法
核心思路
不用硬编码指定要排除的城市,直接利用数组的Contains方法判断当前值是否在排除列表中,通过!取反来保留不在列表里的项。
优化后的LINQ代码
string[] excludedCities = {"Hyd", "Bangalore", "Mumbai", "Kolkata"}; var data = fields .FirstOrDefault(x => x.Name == "City" && !excludedCities.Contains(x.Value)) ?.Value.Replace("A !", "");
代码说明
!excludedCities.Contains(x.Value):核心判断逻辑,检查当前City项的Value是否不在排除城市列表中,满足条件才会被选中FirstOrDefault:从fields中找到第一个符合条件的City项,找不到则返回null?.Value.Replace("A !", ""):安全访问找到的项的Value,并替换指定字符串;如果找不到符合条件的项,这部分会直接返回null
结果验证
- 当
x.Value为Bangalore时:因为它在excludedCities数组里,!excludedCities.Contains(...)结果为false,FirstOrDefault返回null,最终data为null(即被丢弃) - 当
x.Value为delhi时:不在排除列表中,条件成立,data会得到替换后的delhi值(如果原Value里没有"A !",就是原字符串)
内容的提问来源于stack exchange,提问作者krishna mohan
相关产品推荐
相关产品推荐

