I think your request is too complex (too many joins), especially considering that there are several that are not even used.
Note that some LINQ providers (such as LINQ to Entities) can take quite some time just processing the query tree to convert it to SQL if the query is complex. (I already had a few queries in 10 or 15 seconds just for EF to parse it.)
If, as I suspect, the LINQ implementation you are using gets into the database, then use the SQL profiling tool to check which actual SQL is passed to the server and how efficient it is in that SQL.
Also, note that given the fields you use, you could actually drop the foreach by materializing the results directly into BoAsset objects.
I.e:
var result = from q in query select new BoAsset { AssetId = qaAssetID, AssetCustomerId = qaAssetCustomerID, StockImage = qaStockImage, Description = qaDescription, DetailedDescription = qaDetailedDescription, Author = qaAuthor, FileName = q.Af1.FileName,
Jean hominal
source share