2014-08-06 2 views
1

Метод 1:Должны ли выражения LINQ использоваться внутри цикла foreach или нет?

var list = processQueue.Where(item => item.Priority < 6); 

foreach (var item in list) 
{ 
    Console.WriteLine("Priority : {0}, Name : {1}", item.Priority, item.Name); 
} 

Метод 2:

foreach (var item in processQueue.Where(item => item.Priority <6)) 
{ 
    Console.WriteLine("Priority : {0}, Name : {1}", item.Priority, item.Name); 
} 

Что такое преимущество одного метода над другим?

+1

Стоит отметить, что единственное отличие здесь заключается в выражении: скомпилированный результат будет точно таким же. Нет никакого преимущества в плане производительности в встроенном приложении. –

ответ

6
  1. Вам нужен список в любом другом месте, кроме цикла?
  2. Включает ли запрос linq в оператор цикла сделать ваш код менее читаемым?
  3. (Как указал Дэн Пузи) Видите ли вы, что вам нужно проверить содержимое list во время отладки?

Если вы ответили «Нет» на все три вопроса, тогда сделайте это частью цикла.

+3

Наличие отдельной переменной также может быть полезно для целей отладки (например, при переходе по коду). –

+1

Хороший совет. Я думаю, что '2', скорее всего, получит ответ« Да »в большинстве случаев. Для кода OP я думаю, что было бы более читаемым делать «var itemsWithPriorityLessThan6 = processQueue.Where (item => item.Priority <6);' –

+0

@DanPuzey Отличная точка, я добавил ее в список. – dcastro

Смежные вопросы