如何在此foreach上添加另一个where子句?

时间:2012-04-10 19:44:50

标签: c# xml linq

是否可以在此添加另一个where子句,或者我是否需要再制作另一个foreach?

foreach (Point point in _Points.Where(x => x.Name == "Test"))
{
}

基本上我要添加的内容还有x.name = "Test"&&其中!x.asset.StartsWith("INV")

4 个答案:

答案 0 :(得分:8)

您可以将它放在相同的Where子句中:

foreach (Point point in _Points.Where(x => x.Name == "Test" && !x.Asset.StartsWith("INV"))
{

答案 1 :(得分:3)

您也可以链接LINQ运算符

foreach (Point point in _Points
    .Where(x => x.Name == "Test")
    .Where(x => !x.asset.StartsWith("INV")))
{

}

有时我觉得与Where链接更具可读性,而不是在一个表达式中混淆大量&&

另请注意,在这种情况下,良好的换行提高了可读性。

答案 2 :(得分:1)

是的,你可以在这里再一次

foreach (Point point in _Points.Where(x => x.Name == "Test")
                               .Where(x=>!x.asset.StartsWith("INV")))
  {

  }

或更好去

foreach (Point point in _Points.Where(x => x.Name == "Test" && !x.asset.StartsWith("INV")))
  {

  }

答案 3 :(得分:0)

以上都可以做到,但你也可以做到

_Points.Where( x => x.Name == "Test" && !x.Asset.StartsWith("INV")).ToList().ForEach(yourmethod());