こんにちは、Linq を使用して「すべて」のエンティティをリストから削除しようとしています。
問題: データベースに特定の証明書を持つユーザーを検索しています。行ごとにそれらを返すということです....しかし、私が確認する必要があるのは、ユーザーが必要なすべての証明書を保持しているかどうかです。これは、int 配列に対してチェックする必要があります。
これは私の配列です: [3,5,16]、今、リストからこれらの 3 つすべてを持っていないすべてのユーザーを削除したいと思います。コード内の配列の名前は必須です!
返されるリストアイテムは次のようになります
listitem.CertificateValue
listitem.Uid
listitem.NameOfPerson
したがって、基本的にこの例では、Peter はリストに3 つの行を持っています。この場合、リストにとどまるために必要なすべての行です。ただし、Philip には 2 つの行しかないため、合計検索基準を満たしていないため、これらは両方とも削除する必要があります。
また、copyOfMandatory は、元のコレクションを台無しにして期待を引き起こさないようにするためのものです (コレクションのサイズが変更されました)。
foreach (var item in copyOfMandatory)
{
if (!mandatoryusers.All(i => mandatory.Contains(i.CertificateValue)
|| i.Uid == item.Uid))
{
mandatoryusers.RemoveAll(i => i.Uid == item.Uid);
}
}
UPDATE RemoveAll は、期待どおりに機能しない if ステートメントの魅力のように機能します。
これを行っても、リストのどの部分も取り除かれません。|| の代わりに && で始めました。しかし、それを行うと、検索条件を満たしている限り、最後に遭遇した人以外はすべて殺されます。
これを行う方法についてのヒントはありますか?