我只是附上一张图片作为参考.我很难过.在调试器中,值肯定彼此相等,但Find<T>仍然返回null并Exists<T>仍然返回false.供参考:UserRepository实现IEnumerable<T>,其中T是DomainUser.

Jon*_*eet 13
问题是类型CommandArgument是object,所以它正在执行参考身份检查.(我很惊讶这不会给你一个编译时警告.)
您可以强制CommandArgument转换string或使用Equals:
u => u.Username == (string) args.CommandArgument
Run Code Online (Sandbox Code Playgroud)
要么
u => Equals(u.Username, args.CommandArgument)
Run Code Online (Sandbox Code Playgroud)
(使用静态Equals方法这种方式意味着它甚至可以用于具有null用户名的用户,与之不同u.Username.Equals(args.CommandArgument).)
我不会将序列转换为列表 - 我只是使用LINQ代替:
DomainUser toRemove =
repo.FirstOrDefault(u => u.Username == (string) args.CommandArgument);
Run Code Online (Sandbox Code Playgroud)