2011-08-22 2 views
1

테이블에 대한 쿼리를 수행하여 다른 데이터베이스에서 테이블 Product을 쿼리하는 데 필요한 ID 목록을 얻습니다 (요청하기 전에이 방법이어야 함). , dbs를 통해 쿼리 할 수 ​​없음). LinqToSql : 쿼리 내에서 사용되는 목록에서 필드 선택

var prods = (from p in context.Product 
      where installs.Select(i => i.ProductId).Contains(p.ProductId) 
      select new 
      { 
       ProductNumber = p.ProductNumber 
       // How do I get InstallationId from installs?? 
      }).ToList(); 

내가 필요한 건 알고

입니다 :이처럼 보이는 Product 테이블에 쿼리에 대해이 목록을 사용하여 문제가없는

class Installation 
{ 
    Guid InstallationId 
    Guid ProductId 
} 

List<Installation> installs; 

: 다음과 같은 목록이 어떻게 표시되는지를 보여줍니다 목록에서 InstallationId를 검색하여 새 목록에 저장할 수 있습니까?

미리 감사드립니다.

답변

0

제이슨의 대답에 약간의 리팩토링에 가입해야한다.

var products = (from product in context.Product     
       where installs.Select(i => i.ProductId).Contains(p.ProductId) 
       select product).ToList() 

var installedProducts = (from product in products 
         join install in installs 
         on install.ProductId equals product.ProductId 
         select new 
         { 
          ProductNumber = product.ProductNumber, 
          InstallationId = install.InstallationId 
         }).ToList(); 
+0

고맙습니다. 별도의 제품 목록을 만드는 것이 핵심이었습니다. 나는 제이슨 (Jason)에게 투표를 의뢰했으나 누락 된 부분을 제공 한 이후 답변을 주셨습니다. – CAbbott

3

당신은이 LinqToSql 예외를 허용하는

var products = (from product in context.Product 
       join install in installs 
        on install.ProductId equals product.ProductId 
       select new { 
        ProductNumber = product.ProductNumber 
        InstallationId = install.InstallationId 
       } 
       ).ToList(); 
+0

죄송합니다, 기쁨 다음은 – CAbbott

+0

@CAbbott operator.' 포함 제외하고'지역 순서는 쿼리 연산자의 SQL 구현에 LINQ에서 사용되지 수 없습니다 : 그럼 그냥 교체 (메모리에 제품 목록을 끌어 쿼리를 사용 'select p '로'select'를 선택), 그 결과를'ToList'로 메모리에 가져온 다음'context.Product' 대신에'List '결과에 합류하십시오. – jason