我有这样的数据库结构(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()
我在表中的字段猜到了,但是这会给你的名字,姓氏电子邮件和电话订购特定产品的用户数量。
谢谢
保罗。第一