1. ホーム
  2. c#

コレクションからアイテムを削除する最適な方法

2023-09-17 19:56:02

質問

C#でコレクションから項目を削除する最良の方法は何ですか?項目はわかっていますが、そのインデックスがわかっていません。 これはそれを行うための1つの方法ですが、それは最高の状態で優雅ではないようです。

//Remove the existing role assignment for the user.
int cnt = 0;
int assToDelete = 0;
foreach (SPRoleAssignment spAssignment in workspace.RoleAssignments)
{
    if (spAssignment.Member.Name == shortName)
    {
        assToDelete = cnt;
    }
    cnt++;
}
workspace.RoleAssignments.Remove(assToDelete);

私が本当にやりたいことは、コレクション全体をループして2つの追加の変数を使用せずに、プロパティ(この場合、名前)によって削除する項目を見つけることです。

どのように解決するのですか?

コレクションのメンバにそのプロパティの一つでアクセスしたい場合、そのために Dictionary<T> または KeyedCollection<T> を代用してください。こうすることで、探している項目を検索する必要がなくなります。

そうでなければ、せめてこうすればいいのに。

foreach (SPRoleAssignment spAssignment in workspace.RoleAssignments)
{
    if (spAssignment.Member.Name == shortName)
    {
        workspace.RoleAssignments.Remove(spAssignment);
        break;
    }
}