1) Создают ли они одинаковый байт-код?
2) Если нет, есть ли преимущество в использовании одного по сравнению с другим при определенных обстоятельствах?
// LINQ select statement
return from item in collection
select item.Property;
// foreach in an iterator block
foreach (item in collection)
yield return item.Property;