您在LINQ语法中遇到的最严重的滥用是什么?

时间:2008-10-29 09:53:32

标签: linq anti-patterns abuse

在最近的Dot Net Rocks podcast,Jon Skeet提到了可能滥用LINQ语法的问题。人们看到LINQ做了什么疯狂的事情的例子?

4 个答案:

答案 0 :(得分:21)

必须是ray-tracer implemented in a single LINQ expression。所有人同时聪明,美丽,可怕!

答案 1 :(得分:4)

以下是my own abuses - 纯粹是为了嘲笑极客之夜,并演示编译器实际对查询表达式做了什么。

可以说我的"LINQ to Mandelbrot"也有点辱骂:)

顺便说一下,我特别想到滥用语法,但是总有很多方法可以滥用LINQ的存在 - 当有更简单的方法时,做“LINQ方式”不使用LINQ即可使用。例如,转到数组的n元素:

// Sensible (we know that people implements IList<Person>)
Person x = people[10];
// Insane
Person y = people.Skip(9).First();

我怀疑会有更多这样的滥用案例,而不是滥用查询表达式的力量,部分原因是许多开发人员都不会意识到滥用查询表达式甚至会起作用:)

答案 2 :(得分:3)

老实说,这是人们选择LINQ语法的情况,代码可以这样做:

  • 与简单循环相同或更长
  • 通过简单的循环提供无性能正确性优势(可读性/可维护性)

答案 3 :(得分:2)

我见过的其中一个“最好的”来自thedailywtf.com

public string LastSixDigits
{
 get
 {
   if (string.IsNullOrWhiteSpace(this.Number) || this.Number.Length < 6)
     return string.Empty;
   return this.Number.Reverse().Take(6).Reverse().Aggregate(string.Empty, (s, c) => s += c);
 }
}