使用LINQ从另一个(对象)列表中删除(对象)匹配列表

时间:2013-02-10 13:13:28

标签: asp.net vb.net linq

我在查询如何完成问题标题中概述的任务时遇到了一些困难。

基本上,我有一个'News'对象列表,定义为:

Dim news_list As List(Of News) = myNamespcae.News.ListNews()

根据条件,我有另一个'新闻'对象列表为;

Dim news_headlines As List(Of News) = myNamespace.News.getHeadlines()

然后,我再次将'spot'作为List(of News)作为;

Dim spots = (From n In news_list Take (10) Select n)

我想要完成; 如果news_headlines不为空,如果斑点中存在任何news_headlines新闻对象,则将其从斑点中删除。返回过滤点。

任何指导都将受到赞赏..

感谢。

2 个答案:

答案 0 :(得分:0)

如果你想从Spots选择10,然后过滤掉news_headlines中的那些,那就是这样的(警告:VB中的LINQ语法完全来自内存):

Dim spots1 = (From n In news_list Take (10) Select n)
Dim spots2 = (From n in spots1 Where Not news_headlines.Contains(n) Select n)

如果你想过滤掉news_headlines中的那些,然后选择十,那就是这样的:

Dim spots1 = (From n In news_list Where Not news_headlines.Contains(n) Select n)
Dim spots2 = (From n in spots1 Take (10) select n)

您当然可以合并这两个查询。请注意,我假设news_headlines不为空。我还假设您的新闻项目是相同的对象实例或实现IEquatable<T>

答案 1 :(得分:0)

我认为stackoverflow中存在类似的问题。无论如何,您可以使用"Intersect"来获取斑点和标题中的元素,并将其从斑点列表中删除。

代码应该是微不足道的,但我暂时没有使用VB.net,抱歉。