2012-04-03 144 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() 

我在表中的字段猜到了,但是这会给你的名字,姓氏电子邮件和电话订购特定产品的用户数量。

谢谢

保罗。第一