Estrutura de entidade Selecione o novo POCO sem .ToList () primeiro

Estou criando um aplicativo com uma camada de serviço (site do WCF) e um cliente Silverlight 4. Os serviços RIA não são uma opção; portanto, criamos classes intermediárias para serem repassadas. Para o propósito desta pergunta, vamos supor que estou passando de um lado para o outro TastyFood Objetos

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

O Modelo EF é essencialmente da mesma classe, uma tabela com três campos básicos (Tastyness é um int que corresponde à nossa enumeração Tastyness).

Encontro-me usando muito esse tipo de instrução ao fazer consultas do 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;
}

Sem a chamada .ToList (), recebo uma exceção sobre o LINQ não conseguir traduzir o método personalizado para uma consulta equivalente, o que eu entendo.

Minha pergunta é sobre a ligação para.Listar() antes de o.Selecione (...) com a extensão personalizada para converter nosso objeto na versão POCO do objeto Food.

Existe um padrão melhor para fazer aqui, ou talvez até uma alternativa melhor ao .ToList () que possa ter melhor desempenho, pois eu realmente não preciso da funcionalidade do resultado da List <..>.

questionAnswers(4)

yourAnswerToTheQuestion