Entity Framework Сначала выберите новый POCO без .ToList ()

Я ' m создание приложения с уровнем обслуживания (веб-сайт WCF) и клиентом Silverlight 4. Службы RIA не подходят, поэтому мы создаем промежуточные классы для передачи туда и обратно. Для этого вопроса предположим, что я передаю туда и обратно объекты Tasty Food .

public class FoodData
{
  public int Id { get; set; }
  public string Name { get; set; }
  public Tastyness TastyLevel { get; set; }
}

Модель EF - это, по сути, тот же класс, таблица с тремя основными полями (Tastyness - это int, который соответствует нашему перечислению Tastyness).

Я часто использую этот вид операторов при выполнении запросов Entity Framework:

public List<FoodData> GetDeliciousFoods()
{
  var deliciousFoods = entities.Foods
                               .Where(f => f.Tastyness == (int)Tastyness.Delicious)
                               .ToList()  // Necessary? And if so, best performance with List, Array, other?
                               .Select(dFood => dFood.ToFoodData())
                               .ToList();

  return deliciousFoods;
}

Без вызова .ToList () я получаю исключение о том, что LINQ не может преобразовать пользовательский метод на эквивалент запроса, который я понимаю.

Мой вопрос касается вызова .ToList () перед .Select (... ) с настраиваемым расширением для преобразования нашего объекта в POCO-версию объекта Food.

Есть ли здесь лучший шаблон или, может быть, даже лучшая альтернатива .ToList (), которая может быть более производительной, поскольку мне действительно не нужна функциональность результата List <..>.

15
задан Jacob 3 March 2011 в 20:37
поделиться