Linq to Sql连接两个表

时间:2012-04-03 08:04:17

标签: linq-to-sql

我有这样的数据库结构(1 - 1,0 - 多)

Product 1->0 Orders 0->1 Users

我需要查找指定产品的所有用户,我已经开始编写linq查询但不知道如何完成它。

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

2 个答案:

答案 0 :(得分:2)

首先,First方法只会返回符合条件的第一个项目,并且由于您想要返回IQueryable User个,这可能不是什么你想要的。

其次,我认为开始使用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 :(得分: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()

我已经猜到了表格中的字段,但是这将为您提供订购某种产品的用户的名字,姓氏电子邮件和电话号码。

由于

保罗。