2011-03-08 7 views
2

내가 linq 쿼리에 갇혀있어 어디 데이터베이스 검색 &Linq에서 Sql 로의 하위 쿼리

DBSearchDataContext db = new DBSearchDataContext(); 
     object q = from b in db.Products 
        where b.ProductCode.Contains(val) | 
        b.ProductName.Contains(val) | 
        b.Specification.Contains(val) | 
        b.Description.Contains(val) |      
        b.Category.Contains(val) 
        select b; 

     GridView1.DataSource = q; 
    GridView1.DataBind(); 

를 사용하여 결과를 표시 나는 카테고리 테이블에서 categoryID 일치하는 카테고리 테이블에서 이름을 표시 할 수 없습니다.

나는이 같은 SQL에서 이렇게

linq

이 작업을 수행하는 방법 도움이

+0

왜 ** 키워드에 가입 ** 일반 LINQ를 사용하지? SQL의 조인에 대해 알고 있습니까? 간단한 "INNER JOIN"으로 SQL 쿼리를 개선 할 수 있습니다. 매핑이 좋다면 조인이 필요없고'b.Category.Name' 또는 무엇이든 선택하십시오. –

답변

0

당신은 절을하자 Linq에에 하위 쿼리를 넣을 수 있습니다. 예를 들어

를 참조하십시오.

1

일부 매핑이 누락 된 경우 간단한 결합을 사용하지 않는 이유는 무엇입니까?

var q = from p in db.Products 
     join c in db.Category on p.CategoryID equals c.CategoryID 
     where ... 
     select new 
     { 
      p.ProductCode, 
      ..., 
      c.Category 
     }; 

또는 적절한 매핑으로

:

var q = from p in db.Products 
     where ... 
     select new 
     { 
      p.ProductCode, 
      ..., 
      p.Category.Category 
     };