我有這樣的數據庫結構(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 - 一個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)....
}
第一件事,該First
方法只會返回符合您的標準的第一個項目,因爲要返回User
的IQueryable
一個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;
}
像這樣的東西應該工作(寫在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()
我在表中的字段猜到了,但是這會給你的名字,姓氏電子郵件和電話訂購特定產品的用戶數量。
謝謝
保羅。第一