2012-04-03 143 views
2

我有這樣的數據庫結構(1 - 一個0 - 許多)LINQ到SQL連接兩個表

Product 1->0 Orders 0->1 Users 

我需要找到特定產品的所有用戶,我已經開始寫LINQ查詢,但不知道如何完成它。

public IQueryable<User> GetUsers(int productId) 
{    
    return _db.Products.First(p => p.Id == productId).... 
} 

回答

1

第一件事,該First方法只會返回符合您的標準的第一個項目,因爲要返回UserIQueryable一個s,這可能不是你想要的。第二,我認爲開始使用Linq-to-SQL最簡單的方法是使用查詢符號,尤其是當你在處理連接時,這是don't look too pretty when using lambda expressions

public IQueryable<User> GetUsers(int productId) 
{ 
    return from p in _db.Products 
      join o in _db.Orders on p.Id equals o.productId 
      join u in _db.Users on o.userId equals u.userId 
      where p.productId == productId 
      select u; 
} 
1

像這樣的東西應該工作(寫在VB.net):

Dim users() = (from x in _db.Users 
      Join y in _db.Orders on y.userid equals x.userid 
      Join z in _db.Product on z.productid equals y.productid 
      where z.productname = "ProductName" 
      select x.firstname,x.lastname,x.email,e.tel).toarray() 

我在表中的字段猜到了,但是這會給你的名字,姓氏電子郵件和電話訂購特定產品的用戶數量。

謝謝

保羅。第一