2008-10-29 4 views

ответ

3

Здесь 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(); 

Я подозреваю, что там будет больше случаев злоупотребления, как это, чем злоупотребление властью выражений запросов, отчасти потому, что многие разработчики не понимают, что злоупотребление запрос выражения будут даже работать :)

+1

Зачем кому-либо когда-либо делать Skip.First, когда они могут делать ElementAt? ;) – 2009-09-18 08:27:32

+0

На противоположной стороне монеты есть люди, которые считают, что выражения запросов - единственный способ использовать базу данных. http://stackoverflow.com/q/16904331/34397 – SLaks 2013-06-03 19:33:21

2

Честно говоря, это должно быть случаев, когда люди выбрали синтаксис LINQ, где код, чтобы сделать это:

  • был таким же или больше, чем простой цикл
  • не предложили работы или правильность преимущества (читаемости/ремонтопригодность) по сравнению с простой петлей
1

Один из «лучших» тех, что я когда-либо видел это из 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); 
} 
}