Вы не можете * вернуть анонимный тип, потому что вызывающая сторона не будет знать, какой это тип, и не сможет его использовать.
Если вы хотите вернуть результаты, вы можете создать объектынеанонимный тип:
IEnumerable<Foo> assets =
from Product p in Session.CreateLinq<Product>()
where bundles.Contains(p.ProductBundle)
select new Foo { Bar = p.Asset, Baz = p.Asset.PropertyTbl};
Вы также можете использовать тип Tuple в .NET 4, если не хотите создавать пользовательский класс для своих значений.
* Это не совсем верно - это возможно, но вам следует избегать этого.Вот ссылка в любом случае, если вы действительно хотите.