如何通过LINQ使用以下代码来避免循环?

Sha*_*awn 3 c# linq

foreach (Feature fe in features)
{
    if (fileNames.Any(file => file.Contains(fe.FeatureName)))
    {
        fe.MatchCount = fe.MatchCount == 0 ? 1 : fe.MatchCount;
    } 
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 9

你正在改变循环变量末尾的对象,所以你不能在 LINQ中这样做(干净利落).保持循环; 理解起来会更简单,但也许可以减少一点:

var qry = features.Where(fe => fe.MatchCount == 0 &&
           fileNames.Any(file => file.Contains(fe.FeatureName));

foreach (Feature fe in qry) { fe.MatchCount == 1; }
Run Code Online (Sandbox Code Playgroud)

  • 1,我不明白为什么人们不喜欢'的foreach(布拉布拉)',他们总是喜欢一个1行的LINQ的表达,这是不是比'foreach`循环可读. (10认同)
  • 调试linq查询也很痛苦. (2认同)