2012-05-03 7 views
2

Я прочитал пару статей о Linq и Func <> и понял простые примеры, но я не могу использовать их в повседневном программировании. Я заинтересован, чтобы знать, какие сценарии LINQ или лямбда-выражения полезны и должны быть использованыList.add using Linq

Для этого кода: Могу ли я использовать Linq или лямбда-выражения

List<int> abundantNumbers = new List<int>(); 
for (int i = 0; i < 28888; i++) 
    { 
     if (i < pta.SumOfDivisors(i)) 
     { 
      abundantNumbers.Add(i); 
      } 
    } 

ответ

14

Да, вы можете абсолютно использовать LINQ в вашем пример:

var abundantNumbers = Enumerable.Range(0, 28888) 
           .Where(i => i < pta.SumOfDivisors(i)) 
           .ToList(); 

Обратите внимание, что это важно, что вы не просто разместить код, который добавлен в список - вы отправили код, который показал, что список был пуст, чтобы начать с. Другими словами, вы являетесь , создавая список. Если бы надо было просто код, который добавляется к существующему списку, я бы использовал что-то вроде:

var query = Enumerable.Range(0, 28888).Where(i => i < pta.SumOfDivisors(i)); 
abundantNumbers.AddRange(query); 
+0

ничего себе ... ты так быстро! – GolfWolf

+0

Он Джон [цензуре] Скит; howd'ya думаю, что он получил репутацию 434k? – KeithS

+0

+1 Этот код настолько читабельнее – empi

2

Если вы хотите сделать это с обозначениями LINQ, она будет идти, как это:

var abundantNumbers = (from i in Enumerable.Range(0, 28888) 
         where i < pta.SumOfDivisors(i) 
         select i) 
         .ToList();