我有一个作家名单。
public class Writers{
long WriterID { get;set; }
}
此外,我有两个类型的文章列表.
public class Article{
long ArticleID { get; set; }
long WriterID { get; set; }
//and others
}
所以我的代码是:
List<Article> ArticleList = GetList(1);
List<Article> AnotherArticleList = AnotherList(2);
List<Writers> listWriters = GetAllForbiddenWriters();
我想从ArticleList
,AnotherArticleList
中删除那些记录,其中WriterID
与listWriters
WriterID
匹配。如何在LINQ中执行此操作?
5条答案
按热度按时间nfg76nw01#
如果您实际上有一个
List<T>
,我建议您在构造一组writer ID之后使用List<T>.RemoveAll
:如果您 * 确实 * 想要使用LINQ,您可以用途:
请注意,这会更改 variable,但不会修改现有列表--因此,如果存在对同一列表的任何其他引用,它们不会看到任何更改(而
RemoveAll
会修改现有列表)。7qhs6swi2#
fdbelqdn3#
您可以使用Except:
jexiocij4#
我真的不明白你面临的困难是什么...
为什么不使用一个简单的for循环从列表中过滤/删除数据呢?(注意,如果在编辑/更改迭代对象时进行迭代,foreach循环肯定不会起作用)
向后迭代技巧解决了“迭代时删除项”的范例。
trnvg8h35#
只是一个设计提示,你的类应该叫做
Writer
(单数形式),而不是Writers
(复数形式)。