方法仅返回Null:类列表匹配用户输入逻辑异常排查求助
排查思路
- 修正对象比较逻辑:你当前用
clientaccount.Equals(cliEmail)做判断,但Client和ClientEmail是不同类型的对象,默认的Object.Equals只会判断引用是否相同,不可能匹配成功。你需要改成比较具体的属性值,比如假设Client类有Email属性、ClientEmail类有存储邮箱字符串的Value属性,就把判断条件改成:if (string.Equals(clientaccount.Email, cliEmail.Value, StringComparison.OrdinalIgnoreCase)) - 重写
Equals方法(可选):如果一定要用Equals方法做比较,需要在Client类里重写Equals,让它支持和ClientEmail类型的内容比对,示例如下:public override bool Equals(object obj) { if (obj is ClientEmail cliEmail) { return string.Equals(this.Email, cliEmail.Value, StringComparison.OrdinalIgnoreCase); } return base.Equals(obj); } // 记得同时重写GetHashCode,保持Equals和GetHashCode的一致性 public override int GetHashCode() { return Email?.GetHashCode() ?? 0; } - 验证数据一致性:在循环内添加调试输出,确认两边的实际值是否一致,比如:
排查是否存在大小写、空格、特殊字符等肉眼不易察觉的差异。Console.WriteLine($"当前Client邮箱:{clientaccount.Email},用户输入:{cliEmail}"); - 确认列表加载有效性:在方法开头添加输出,检查
clientaccounts列表的长度和内容:
确保列表确实包含数据,且每个Console.WriteLine($"已加载的Client数量:{clientaccounts.Count}");Client对象的目标属性已正确赋值。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

