为什么要使用LINQ表达式?

Nat*_*ins 3 c# linq code-readability

我使用Resharper,当我制作几行代码时:

foreach (var posCombination in possibleCombinations)
{
    if (posCombination .Count == combo.Count && posCombination .Select((l, i) => combo.Contains(l)).All(b => b))
    {
        return true;
    }
}

return false;
Run Code Online (Sandbox Code Playgroud)

它会问我是否要将其转换为LINQ表达式:

return possibleCombinations.Any(possibleCombination => 
     possibleCombination.Count == combo.Count 
  && possibleCombination.Select((l, i) => combo.Contains(l)).All(b => b));
Run Code Online (Sandbox Code Playgroud)

我有很多人告诉我他们很难读懂LINQ语句中的内容......那么为什么我要将它转换为LINQ表达式,如果它使我的代码不那么可读?

das*_*ght 6

这完全取决于你:如果你的代码的读者,包括你自己,更喜欢更冗长的风格,一定要保留它:难以阅读聪明的代码在程序员的时间比在CPU时间中要昂贵得多.毕竟,这只是ReSharper的暗示:关注或忽视它完全取决于你.

随着时间的推移阅读LINQ代码会变得更容易(我知道它对我来说变得更加容易,但是花了大量的LINQ代码编写并查看其他团队成员编写的LINQ代码).我们发现特别有用的一件事是评论:一个LINQ表达式可以在一小段代码中填充大量信息,因此用简单的英语拼出意图有助于在偶然发现我写过的一行时找出意思.几个月前.