在最近的Dot Net Rocks podcast,Jon Skeet提到了可能滥用LINQ语法的问题。人们看到LINQ做了什么疯狂的事情的例子?
答案 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);
}
}