1

我正在尝试从items2中删除List<int>项目List<int>

List<int> item1 = new List<int> {1,2,3,4,5,6,7,8,9,10};
List<int> item2 = new List<int> {1,2,3,4};

从 item1 中删除 item2 值后,所需的结果是

item1 = {5,6,7,8,9,10 }

是否有任何直接方法或任何其他方法可以从另一个项目列表的内容中删除一个项目列表的内容,而不使用 'for' 或 'foreach' ?

4

1 回答 1

10

某处将不得不循环不过,您不必循环输入源代码。至于你做什么......这取决于你的要求。

如果您将变量的类型更改为List<int>您可以使用List<T>.RemoveAll

item1.RemoveAll(x => item2.Contains(x));

item1或者您可以只使用 LINQ,如果您对更改值以引用不同的列表感到满意:

item1 = item1.Except(item2).ToList();

请注意,上述内容还将生成item1一组不同的值 - 如果您有任何重复,它们将被删除(即使它们不在 中item2)。

没有重复删除方面的替代方案:

item1 = item1.Where(x => !item2.Contains(x)).ToList();

或者如果它很大,则使其性能更好item2

var item2Set = new HashSet<int>(item2);
item1 = item1.Where(x => !item2Set.Contains(x)).ToList();
于 2013-02-18T17:55:11.933 回答