簡體   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