var q =
(from ar in db.Articles
join c in db.Categories on ar.ParentId
equals c.Id
join sc in db.Categories on ar.SubId equals sc.Id into scate
from sc in scate.DefaultIfEmpty()
where ar.IsPrivate == false
orderby ar.CreateTime descending
__select new
{
article = ar,
pcate = c,
scate = sc