首页 > C# > 如何从使用 LINQ 查询返回的元素中删除到

如何从使用 LINQ 查询返回的元素中删除到

上一篇 下一篇

假设我有 LINQ 查询,例如:

var authors = from x in authorsList
              where x.firstname == "Bob"
              select x;

鉴于该类型,我如何从查询返回的元素中删除到?authorsListList<Author>AuthorauthorsListauthors

或者,换句话说,如何从中删除所有名字等于鲍勃?authorsList

注意:出于问题的目的,这是一个简化的示例。

分割线

网友回答:

最好使用 List<T>。全部删除以完成此操作。

authorsList.RemoveAll((x) => x.firstname == "Bob");

分割线

网友回答:

如果你真的需要删除项目,那么Except()呢?
您可以基于新列表进行删除,也可以通过嵌套 Linq 来即时删除。

var authorsList = new List<Author>()
{
    new Author{ Firstname = "Bob", Lastname = "Smith" },
    new Author{ Firstname = "Fred", Lastname = "Jones" },
    new Author{ Firstname = "Brian", Lastname = "Brains" },
    new Author{ Firstname = "Billy", Lastname = "TheKid" }
};

var authors = authorsList.Where(a => a.Firstname == "Bob");
authorsList = authorsList.Except(authors).ToList();
authorsList = authorsList.Except(authorsList.Where(a=>a.Firstname=="Billy")).ToList();

分割线

网友回答:

好吧,首先排除它们会更容易:

authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();

但是,这只会更改 的值,而不是从以前的集合中删除作者。或者,您可以使用:authorsListRemoveAll

authorsList.RemoveAll(x => x.FirstName == "Bob");

如果你真的需要基于另一个集合来做,我会使用HashSet,RemoveAll和Contains:

var setToRemove = new HashSet<Author>(authors);
authorsList.RemoveAll(x => setToRemove.Contains(x));

模板简介:该模板名称为【如何从使用 LINQ 查询返回的元素中删除到?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 220次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-22
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信公众平台 单页式简历模板 自适应 html5 企业网站 微信模板 微信图片 响应式 微信文章 微信素材
您可能会喜欢的其他模板