2015-12-26 2 views
3

Учитывая этот пример кодупорядочения OrderBy, Где, выберите в запросе Linq

System.Collections.ArrayList fruits = new System.Collections.ArrayList(); 
fruits.Add("mango"); 
fruits.Add("apple"); 
fruits.Add("lemon"); 

IEnumerable<string> query = fruits.Cast<string>() 
    .OrderBy(fruit => fruit) 
    .Where(fruit => fruit.StartsWith("m"))     
    .Select(fruit => fruit); 

У меня есть два вопроса:

  1. Мне нужно написать последнее Select предложение, если Where возвращает то же Do типа сам по себе? Пример из msdn, почему они всегда пишут?
  2. Каков правильный порядок этих методов? Оправдывает ли порядок? Что делать, если я поменяю Select и Where, или OrderBy?
+0

Можете ли вы ссылаться на MSDN независимо от того, что показывает этот вид выбора? –

+0

@ LasseV.Karlsen Я добавил дополнительно Где, но вопрос о выборе там https://msdn.microsoft.com/ru-ru/library/bb341406(v=vs.110).aspx – Wachburn

+0

Ну, этот пример является фиктивным, так как [@BruceJonston] (http://stackoverflow.com/users/3121/bruce-johnston) уже ответил. –

ответ

8
  1. Нет, Select не necesssary, если вы на самом деле не преобразуя возвращаемый тип.

  2. В этом случае заказ вызовов метода может повлиять на производительность. Сортировка все объекты до фильтрация наверняка займет больше времени, чем фильтрация, и затем сортировка меньшего набора данных.

+0

, и если я использую EF, тогда такое влияние на производительность будет иметь место в любом случае? Поскольку EF просто создает SQL-запрос в потоке, я могу теперь разместить OrderBy где-нибудь? или после получения данных L2O присоединятся, чтобы выполнить дополнительные действия? – Wachburn

+0

@sstan Как насчет заказа 'OrderBy' и' Select', какой из них следует использовать в первую очередь с точки зрения производительности? – nam

4

.Select ненужно в этом случае, потому что .Cast уже гарантирует, что вы работаете с IEnumerable < строки >.

Порядок заказа .OrderBy и .Where не влияет на результаты запроса, но в целом, если вы используете. Сначала вы получите лучшую производительность, потому что будет меньше элементов для сортировки.

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