2013-02-10 155 views
0

我有点难以理解如何完成我的问题标题中列出的任务。使用LINQ从另一个(对象)列表中删除匹配列表(的对象)匹配列表(对象)

基本上,我有定义为“News”的对象的列表:

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

根据条件,我还有一个“新闻”对象作为列表;

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

然后,我再次将'点'作为新闻列表;

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

我想完成; 如果news_headlines不为空,如果有news_headlines新闻对象存在于景点中,请将其从景点中删除。返回过滤点。

任何指导将不胜感激。

谢谢。

回答

0

如果你想从Spots挑十然后在news_headlines过滤掉的,它会是这样的(警告:LINQ语法VB完全从内存中):

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不为null。我还假设您的新闻项目是相同的对象实例或执行IEquatable<T>

+0

谢谢安,我想摆脱所有news_headlines并从news_list中删除它们 – 2013-02-10 14:32:35

+0

@Emin所以你想改变'news_list'的内容?或者只是将'news_headlines'的内容排除在'spots'结尾的内容之外呢? – 2013-02-10 15:36:39

+0

好吧,好像我造成了一个混乱。基本上,news_list和news_headlines都是List(MyNewsObject),因此它们在类型上是相同的。我想要的是创建另一个列表,该列表将包含来自news_list的所有项目,而不包括news_headlines中的所有项目...因此,将斑点想象为; spots = news_list - news_headlines – 2013-02-10 15:40:21

0

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

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