Я ' 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 <..>.