これについては参考までに画像を添付しておきます。私は困惑しています。デバッガーでは、値は互いに確実に等しくなりますが、Find<T>
まだ null を返し、Exists<T>
まだ false を返しています。参考までに: where is をUserRepository
実装します。IEnumerable<T>
T
DomainUser
質問する
2791 次
2 に答える
13
問題は、の型がCommandArgument
isobject
であるため、参照同一性チェックを実行していることです。(これがコンパイル時の警告を出していないことに驚いています。)
にキャスト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);
于 2013-07-10T15:06:06.373 に答える
5
やってみました :
u.Username.Equals(args.CommandArgument)
于 2013-07-10T15:05:49.150 に答える