コレクション内のユーザー オブジェクトに id = to users101 でアクセスし、これを別のユーザーに設定しようとしています。
Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser();
前もって感謝します。
コレクション内のユーザー オブジェクトに id = to users101 でアクセスし、これを別のユーザーに設定しようとしています。
Controller.MyObject.SingleOrDefault(x => x.Id == "user101") = OtherUser();
前もって感謝します。
1 つの LINQ 式でそれを行うことはできません。
通常、LINQ 拡張機能は列挙型で機能しMyObject
ます。コレクションの場合は、最初に必要なアイテムを見つけてから、新しいオブジェクトで上書きする必要があります (さらにSingleOrDefault()
、条件が満たされない場合は単に null を返します)。
次のように書く必要があります (正確なコードは内容によって異なりますMyObject
)。
var item = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
if (item != null)
Controller.MyObject[Controller.MyObject.IndexOf(item)] = new OtherUser();
によって実行されるチェックが本当に必要ない場合はSingleOrDefault()
、コードを単純化できることに注意してください (および で実行される二重検索を回避しますSingleOrDefault()
) IndexOf()
。
これが「パフォーマンスが重要」である場合は、このタスクを 1 回のパスで実行するアドホック実装を作成する方がよいでしょう。
2行で試してください:
var objectWithId = Controller.MyObject.SingleOrDefault(x => x.Id == "user101");
(objectWithId as WhateverTypeOfObjectOtherUserIs) = OtherUser();