Q:

How to write this LINQ Query in a better way

I have one Linq Query. When I run the query, Only for 10 records its taking 13 seconds to extract the data to the model. I need to know the query which I wrote is good for performance or not. Please guide me what i am doing wrong.
Code
    var stocktakelist = (from a in Db.Stocktakes
                             select new ExportStock
                                 {
                                     Id = a.Id,
                                     ItemNo = a.ItemNo,
                                     AdminId = (from admin in Db.AdminAccounts where admin.Id == a.Id select admin.Name).FirstOrDefault(),
                                     CreatedOn = a.CreatedOn,
                                     Status = (from items in Db.Items where items.ItemNo == a.ItemNo select items.ItemStatu.Description).FirstOrDefault(),
                                     Title = (from tit in Db.BibContents where tit.BibId == (from bibs in Db.Items where bibs.ItemNo == a.ItemNo select bibs.BibId).FirstOrDefault() && tit.TagNo == "245" && tit.Sfld == "a" select tit.Value).FirstOrDefault()   // This line of Query only makes the performance Issue
                                 }
            ).ToList();

Thanks

A:

I was trying to create the corresponding query with some joins for practice.
I cannot test it and i'm not 100% sure that this query will you get the result
you are hoping for but maybe at least it will give you a hint on how to write 
joins with linq.
from a in Db.Stocktakes

join admin in Db.AdminAccounts
  on a.Id equals admin.Id
into adminJoinData
from adminJoinRecord in adminJoinData.DefaultIfEmpty( )

join items in Db.Items
  on a.ItemNo equals items.ItemNo
into itemsJoinData
from itemsJoinRecord in itemsJoinData.DefaultIfEmpty( )

join title in Db.BibContents
   (
       from subQuery in Db.BibContents
       where subQuery.TagNo == "245"
       where subQuery.Sfld == "a"
       select subquery
   )
  on title.BibId equals itemsJoinRecord.BidId
into titleJoinData
from titleJoinRecord in titleJoinData.DefaultIfEmpty( )

select new ExportStock( )
{
    Id = a.Id,
    ItemNo = a.ItemNo,
    AdminId = adminJoinRecord.Name,
    CreatedOn = a.CreatedOn,
    Status = itemsJoinRecord.ImemStatu.Description,
    Title = titleJoinRecord.Value
}

