0

是否可以在此添加另一个 where 子句,还是我需要再做一个 foreach?

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

基本上我想添加的也是 where x.name = "Test"&& where!x.asset.StartsWith("INV")

4

4 回答 4

8

你可以把它放在同一个 Where 子句中:

foreach (Point point in _Points.Where(x => x.Name == "Test" && !x.Asset.StartsWith("INV"))
{
于 2012-04-10T19:46:23.853 回答
3

您还可以链接 LINQ 运算符

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

}

有时我发现链接起来更易读,Where而不是&&在一个表达式中搞乱很多。

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

于 2012-04-10T19:49:05.007 回答
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")))
  {

  }
于 2012-04-10T19:48:15.243 回答
0

以上将做的伎俩,但你也可以做

_Points.Where( x => x.Name == "Test" && !x.Asset.StartsWith("INV")).ToList().ForEach(yourmethod());
于 2012-04-10T19:48:05.903 回答