类别
.NET核心

LINQ:不在另一个列表中的地方

这是如何根据另一个列表中的项目从一个列表中过滤项目的简短帖子。我们将使用.NET LINQ.用于编写查询语法,实现不在另一个列表方案中的位置。

问题介绍

让我们说我们有两个如下所列的列表:

List skipPosts = new List();
skipPosts.Add(new Post() { ID = 1 });
skipPosts.Add(new Post() { ID = 2 });
skipPosts.Add(new Post() { ID = 5 });

List posts = new List();
posts.Add(new Post() { ID = 1 });
posts.Add(new Post() { ID = 2 });
posts.Add(new Post() { ID = 3 });
posts.Add(new Post() { ID = 4 });
posts.Add(new Post() { ID = 5 });

The posts list is our main list from where we want to filter out the posts that are in skipPosts list.

解决LINQ的解决方案比较两个列表

LINQ最简单的解决方案:

var result = posts.Where(p => !skipPosts.Any(p2 => p2.ID == p.ID));

这种解决方案是短且非常有效,具有较小的数据集。

如果您使用真正的大型数据集,那么您也可能需要考虑其他选项。