我有这样的数据库结构(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)....
}
答案 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()
我已经猜到了表格中的字段,但是这将为您提供订购某种产品的用户的名字,姓氏电子邮件和电话号码。
由于
保罗。