Aslında bunun için Join Statement yazmana gerek yok, LINQ bunu senin için SQL'e dönüştürürken yapıyor zaten:
//Products ve Versions tabloların olduğunu
//ve bunların birbirine bağlı olduğunu varsayıyorum.
var results = from p in db.Products
where p.ProductId == 3
select new
{
Product = p,
VersionItems = p.Versions
};
Bu sorgu sonucunda, results içinde bir döngü ile dönerseniz her row için bir product ve bu product'ın versiyonlarının bilgisini taşıyan VersionItems property'sini görebilirsiniz.
NOT: LINQ sorgularında bağlı tablolardan veri çekerken Lazy Loading ve Eager Loading kavramlarına dikkat ediniz.
101 LINQ Samples belki size LINQ sorgularının yapısı konusunda bir fikir verebilir:
code.msdn.microsoft.com/101-lınq-samples-3fb9811b
Güncelleme:
Yukarıdaki sorguda, içerdeki VersionItems içine de where ekleyebilirsin:
var results = from p in db.Products
where p.ProductId == 3
select new
{
Product = p,
VersionItems = p.Versions.Where(x => x.VersionId > 3)
};