繁体   English   中英

从Id位于另一个列表中的列表中删除项目

[英]Removing items from a list where the Id is in another list

我看到这个问题很常见,但没有一个答案按预期工作。 我有一个对象列表,当他们的Id在指定列表中时,我需要删除其中的一些对象。 我尝试了List.RemoveAll,但只返回一个整数,而不是修改后的列表。 如何取回列表,减去已删除的项目?

List<Target> allServers = GetTargets(Group.Id);
List<long> excludedServers = GetExcludedServers();

List<Target> patchServers = allServers
    .RemoveAll(x => !excludedServers.Any(y => y.Id == x.Id));

RemoveAll修改您现有的List,它返回它删除的项目数。 获取没有您可以使用的项目的新列表

var newList = myList.Where(i => !excludedItems.Any(ei => ei.Id == i.Id)).ToList();

虽然如果您的Server类具有正确的相等成员来比较ID,您可以写

var newList = myList.Except(servers).ToList();

尝试这个

List<Target> allServers = GetTargets(Group.Id);
List<long> excludedServers = GetExcludedServers();

List<Target> patchServers = allServers
    .Where(x => !excludedServers.Any(y => y.Id == x.Id)).ToList();

你可以这样做

patchServers = allServers.Where(x => !excludedServers.Contains(x.id)).ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM