Linq多列Select查询条件失效问题及修复方法咨询
问题修复方案
你的代码问题出在两个核心点:
- 过滤条件偏离需求:你要筛选
Connection和Seal不为空的条目,但当前where判断的是el.from,完全没针对目标字段。 - 嵌套了多余的集合查询:
select里用l.Select(...)会让每个符合条件的元素都返回整个集合的所有对象,这就是你看到每个匹配项都包含所有输入的原因。
修复后的代码
查询表达式写法
var fromElements = from el in l where !string.IsNullOrEmpty(el.Connection) && !string.IsNullOrEmpty(el.Seal) select new { el.Connection, el.Seal };
方法链写法(可选)
var fromElements = l.Where(el => !string.IsNullOrEmpty(el.Connection) && !string.IsNullOrEmpty(el.Seal)) .Select(el => new { el.Connection, el.Seal });
关键修复说明
- 修正过滤逻辑:用
string.IsNullOrEmpty()同时判断null和空字符串,替代冗余的双重判断,精准筛选Connection和Seal都有效的条目。 - 移除嵌套查询:直接对当前遍历的
el创建匿名对象,每个符合条件的元素只会生成包含自身Connection和Seal的对象,不会重复返回整个集合。
内容的提问来源于stack exchange,提问作者EliTheKing
相关产品推荐
相关产品推荐

