使用LINQ从另一个(对象)列表中删除匹配列表(的对象)匹配列表(对象)
问题描述:
我有点难以理解如何完成我的问题标题中列出的任务。使用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新闻对象存在于景点中,请将其从景点中删除。返回过滤点。
任何指导将不胜感激。
谢谢。
答
如果你想从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>
。
谢谢安,我想摆脱所有news_headlines并从news_list中删除它们 – 2013-02-10 14:32:35
@Emin所以你想改变'news_list'的内容?或者只是将'news_headlines'的内容排除在'spots'结尾的内容之外呢? – 2013-02-10 15:36:39
好吧,好像我造成了一个混乱。基本上,news_list和news_headlines都是List(MyNewsObject),因此它们在类型上是相同的。我想要的是创建另一个列表,该列表将包含来自news_list的所有项目,而不包括news_headlines中的所有项目...因此,将斑点想象为; spots = news_list - news_headlines – 2013-02-10 15:40:21