После того, как у вас есть запрос Linq ...
var query = (from ... in ... where ... select ...);
Или, для вашего конкретного примера:
var query = (from r in dbContext.MyTable where (r.someAttr == "YELLOW") select r);
Вы можете либо просто перебрать его с помощью foreach
который заставит его быть выполнена один раз, а затем дать результаты ...
foreach (var r in query)
{
}
... или позвоните по телефону ToList()
(http://msdn.microsoft.com/en-us/library/vstudio/bb342261(v=vs.100).aspx), если вы хотите получить список, который впоследствии может быть передан, обработан или рассмотрен много раз. (Этот список, по существу отключен от сервера после того, как он будет возвращен.)
var list = query.ToList()
... или использовать его для создания коллекции, как в HashSet<T>
(http://msdn.microsoft.com/en-us/library/bb301504(v=vs.110).aspx)
var set = new HashSet<T>(query)
Любой из них может привести он должен выполняться на сервере только один раз и обрабатывать результаты.
В конце концов, сам запрос IEnumerable
. Это также IQueryable
, чтобы вы могли работать с ним дальше и затем перечислить результаты, как ...
var sortedList = query.OrderBy(...).ToList()
самый простой !! :) –