我有一个命令来从可观察的集合中选择项目。
Items.Select(a => a.MyParameter).ToList()
有没有办法将此行扩展为“但不是MyParameter == IsBad?”
编辑:我为没有提出更明确的问题而道歉。选择所有项目.MyDoubleValue但不包含具有items.Exclude == true的项目。这在一个案例中列表,在另一个案例中汇总。我必须为所有项添加布尔值Exclude,所以我必须编辑求和,平均,标准偏差等。如果可以,我只想避免多行代码。
答案 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();