Я создаю приложение со слоем сервиса (веб-сайт WCF) и клиентом Silverlight 4. Услуги RIA не являются опцией, поэтому мы создаем промежуточные классы для перехода туда и обратно. Для этого вопроса позвольте предположить, что я перехожу туда и обратно Вкусные Food
Объекты.
public class FoodData
{
public int Id { get; set; }
public string Name { get; set; }
public Tastyness TastyLevel { get; set; }
}
Модель EF - это, по сути, тот же класс, таблица с тремя основными полями (Tastyness - это int, которая соответствует нашей Enum 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 Продовольственный объект.
Есть ли лучший шаблон, который можно сделать здесь, или, может быть, даже лучшая альтернатива .ToList(), которая может быть более эффективной, поскольку на самом деле мне не нужна функциональность результата List <.. > .