これについては参考までに画像を添付しておきます。私は困惑しています。デバッガーでは、値は互いに確実に等しくなりますが、Find<T>まだ null を返し、Exists<T>まだ false を返しています。参考までに: where is をUserRepository実装します。IEnumerable<T>TDomainUser

問題は、の型がCommandArgumentisobjectであるため、参照同一性チェックを実行していることです。(これがコンパイル時の警告を出していないことに驚いています。)
にキャストCommandArgumentするかstring、次を使用できEqualsます。
u => u.Username == (string) args.CommandArgument
また
u => Equals(u.Username, args.CommandArgument)
(このように静的Equalsメソッドを使用すると、ユーザー名を持つユーザーに対しても機能することを意味します。nullとは異なりu.Username.Equals(args.CommandArgument)ます。)
ただし、シーケンスをリストに変換しません。代わりに LINQ を使用します。
DomainUser toRemove =
repo.FirstOrDefault(u => u.Username == (string) args.CommandArgument);
やってみました :
u.Username.Equals(args.CommandArgument)