使用Lambda从列表中排除某些项目

时间:2017-10-05 16:26:37

标签: c# linq

我有一个命令来从可观察的集合中选择项目。

Items.Select(a => a.MyParameter).ToList()

有没有办法将此行扩展为“但不是MyParameter == IsBad?”

编辑:我为没有提出更明确的问题而道歉。

选择所有项目.MyDoubleValue但不包含具有items.Exclude == true的项目。这在一个案例中列表,在另一个案例中汇总。我必须为所有项添加布尔值Exclude,所以我必须编辑求和,平均,标准偏差等。如果可以,我只想避免多行代码。

3 个答案:

答案 0 :(得分:2)

您可以通过Where

过滤序列
Items
    .Select(a => a.MyParameter)
    .Where(p => !p.IsBad)
    .ToList()

答案 1 :(得分:2)

这叫做使用Linq,它是我在C#中最喜欢的功能之一,因为它让我想起了Python。

当你写:

Items.Select(a => a.MyParameter).ToList();

使用lambda / delegate语法会导致 a 成为集合的元素

Items中的元素必须包含一些名为 a.MyParameter 的参数。因此,上面这段代码只是抓取所有 MyParameter 对象。

如果您想过滤 MyParameter 的某些值,则应使用 Where

Items.Where(a => a.MyParameter != IsBad).ToList();

简而言之,使用选择转换每个元素,但使用 Where 进行过滤。如果你愿意,你也可以将两者结合起来,这取决于你最终想要的东西。

答案 2 :(得分:0)

Items.Where(a=>a.MyParameter!=IsBad).ToList();