【问题标题】:What is the best way to filter a list using LINQ? [closed]使用 LINQ 过滤列表的最佳方法是什么? [关闭]
【发布时间】:2020-10-30 14:59:46
【问题描述】:

在 C# 中,我有一个类型为 类 Invoicelist,我想在其中过滤掉那些具有 isSelected 属性 True 的元素

ListA.Where(x => x.IsSelected)

就像我想从列表中删除那些具有isSlected==True 的元素并将删除的元素保存到另一个列表中,这样在过程结束时我有两个列表:

  • ListA:IsSelected==true 的元素
  • ListB:IsSelected==false 的元素

如何通过 LINQ 查询实现这一点?

注意:如果查询尽可能简短/优化,那真的很有帮助。

【问题讨论】:

  • 短的还是优化的?在这种情况下,它们是相反的目标。

标签: c# .net linq


【解决方案1】:

应该看起来像:

    var ListA = ListWithAllElements.Where(x => x.IsSelected).ToList();
    var ListB = ListWithAllElements.Except(ListA).ToList();

另一种可能是:

    var ListA = ListWithAllElements.Where(x => x.IsSelected).ToList();
    var ListB = ListWithAllElements.Where(x => !x.IsSelected).ToList();

由你决定你喜欢哪一个摩尔。

【讨论】:

  • 关于 LINQ 的知识我还有很多要学...非常漂亮。
  • @ChrisCatignani 关于 LINQ 最重要的一点是,您需要知道每次访问可枚举的 linq 结果都会重新评估查询。
  • 是的......昨天,我试图将查询表达式作为参数传递......它没有发生。
  • 您的意思是...var ListB = ListWithAllElements.Where(x => !x.IsSelected).ToList();?
  • @ChrisCatignani 是的。您可以查询除 IsSelected 为 true 的元素之外的所有元素,也可以查询 IsSelected 为 false 的所有元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 2014-02-27
相关资源
最近更新 更多