yield ключевое слово является одним из тех keywords в С#, который продолжает меня мистифицировать, и я никогда не был уверен, что правильно его использую.
Из следующих двух частей кода, который является предпочтительным и почему?
Версия 1: Использование возврата возврата
public static IEnumerable<Product> GetAllProducts()
{
using (AdventureWorksEntities db = new AdventureWorksEntities())
{
var products = from product in db.Product
select product;
foreach (Product product in products)
{
yield return product;
}
}
}
Версия 2: Вернуть список
public static IEnumerable<Product> GetAllProducts()
{
using (AdventureWorksEntities db = new AdventureWorksEntities())
{
var products = from product in db.Product
select product;
return products.ToList<Product>();
}
}