Select top 1 résultat de la sous-requête dans linq to sql

Voici ma requête sql comme suit

select enq_Id,enq_FromName,
       enq_EmailId,
       enq_Phone,
       enq_Subject,
       enq_Message,
       enq_EnquiryBy,
       enq_Mode,
       enq_Date,
       ProductId,
       (select top 1 image_name 
        from tblProductImage as i 
        where i.product_id=p.product_Id) as imageName,
       p.product_Name,
       p.product_code    
 from tblEnquiry as e 
 inner join tblProduct as p ON e.ProductId=p.product_Id
 where ProductId is not null 

Et j'essaie de convertir cette instruction sql en linq comme suit

var result = from e in db.tblEnquiries
join d in db.tblProducts 
on e.ProductId equals d.product_Id                     
where e.ProductId != null
orderby e.enq_Date descending
select new {
e.enq_Id,
e.enq_FromName,
e.enq_EmailId,
e.enq_Phone,
e.enq_Subject,
e.enq_Message,
e.enq_EnquiryBy,
e.enq_Mode,
e.enq_Date,
d.product_Id,
d.product_Name,
imageName = (from soh in db.tblProductImages
where soh.product_id == e.ProductId
select new { soh.image_name }).Take(1) 
};

Mais le problème sa me donne imageName dans une liste imbriquée, mais je veux que imageName juste comme une chaîne de caractères .

J'ai également vérifier en utilisant espion et dans l'image suivante vous pouvez voir que imageName figurant dans la liste intérieure .

Select top 1 résultat de la sous-requête dans linq to sql

OriginalL'auteur rahularyansharma | 2013-04-04