您好我正在尝试使用 Linq 从列表中删除“所有”实体。
问题:我正在搜索在我的数据库中具有某些证书的用户。事情是它逐行返回它们......但我需要检查的是:如果用户持有所有必需的证书。这应该针对我的 int 数组进行检查。
这是我的数组:[3,5,16],现在我想从列表中删除所有没有这三个的用户。代码中数组的名称是强制性的!
我回来的列表项看起来像这样
listitem.CertificateValue
listitem.Uid
listitem.NameOfPerson
所以基本上对于这个例子,彼得在列表中有三行,在这种情况下,所有行都需要留在列表中。但是 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 语句不能按预期工作。
这样做不会带走列表的任何部分,我从 && 而不是 || 开始 但是,只要他/她满足搜索条件,它就会杀死除了遇到的最后一个人之外的所有东西。
有人对如何做到这一点有提示吗?