2012-04-03 3 views
2

나는이 같은 데이터베이스 구조 (1 - 한, 영 - 많은 사람들이)Linq에 두 개의 테이블을 조인

내가 특정 제품에 대한 모든 사용자를 찾을 필요가
Product 1->0 Orders 0->1 Users 

, 내가 LINQ 쿼리를 쓰기 시작했지만하지 않은 그것을 끝내는 방법을 알아라. (VB.net로 작성) 작업을해야이 같은

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

답변

1

것부터 먼저 First 방법 만 기준을 충족하는 첫 번째 항목을 반환합니다, 당신은 IQueryableUser의의를 반환 할 때문에, 이것은 당신이 원하는 아마 아니다.

두 번째로 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

뭔가 :

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() 

나는 테이블의 필드에서 추측 한, 그러나 이것은 당신에게 이름, 성 이메일과 전화를 줄 것이다 특정 제품을 주문한 사용자 수.

감사합니다.

폴.

관련 문제