2012-01-05 3 views
3

이 SQL 쿼리를 LINQ로 변환하는 방법은 무엇입니까?WHERE 절을 LINQ 형식으로 사용하는 SQL INNER JOIN

SELECT company.ticker, company.primary_analyst, 
     personnel.last_name, company.research_associate, 
     company.secondary_associate, company.coverage_status 
FROM company 
    INNER JOIN personnel ON company.primary_analyst = personnel.dpinitials 
WHERE personnel.last_name='marley' AND company.associate='ml' 
ORDER BY company.coverage_status 
+0

이 또한 표현 체인 구문을 사용하여 기록 할 수

var results = from c in company where c.associate == "ml" from p in c.personnel where p.last_name == "marley" orderby c.coverage_status asc select new { c.ticker, c.primary_analyst, p.last_name, c.research_associate, c.secondary_associate, c.coverage_status }; 

[SQL을 LINQ, Part 6 : 조인 (Bill Horst)] (http://blogs.msdn.com/b/vbteam/archive/2007/12/31/converting-sql-to-linq-part-6)으로 참조하십시오. -joins-bill-horst.aspx) 불행히도 그것 VB에 ... 잘 –

답변

11

그것은 꽤 비슷 :

var results = from c in company 
       join p in personnel on c.primary_analyst equals p.dpinitals 
       where p.last_name == 'marley' and c.associate == 'ml' 
       orderby c.coverage_status asc 
       select new 
       { 
       c.ticker, c.primary_analyst, p.last_name, c.research_associate, 
       c.secondary_associate, c.coverage_status 
       }; 
원하는 특성을 가진 익명의 클래스에

위 프로젝트 - 당신은 당신의 모델에 해당하는 POCO 클래스가있는 경우는, 그에게하지 않을 경우 많은 프로젝트한다 사례를 작성해야합니다.

+0

난 LINQPad를 사용하고 있습니다. 내 쿼리를 "C# 식"으로 처리 할 수 ​​있습니까? –

2

@BrokenGlass의 솔루션은 완벽합니다. 그러나 1..many 관계가있는 경우 LINQ에서 조인 연산자를 사용할 필요가 거의 없습니다. 회사 -> personell 1..many 경우이 예에서,이 같은 쿼리를 작성합니다

var results = company.Where(c => c.associate == "ml") 
        .SelectMany(c => c.personnel, (c, p) => new 
        { 
         c.ticker, 
         c.primary_analyst, 
         p.last_name, 
         c.research_associate, 
         c.secondary_associate, 
         c.coverage_status 
        }) 
        .Where(x => x.last_name == "marley") 
        .OrderBy(x => x.coverage_status) 
-1
var list = (from u in db.Users 
         join c in db.Customers on u.CustomerId equals c.CustomerId 
         where u.Username == username 
         select new {u.UserId, u.CustomerId, u.ClientId, u.RoleId, u.Username, u.Email, u.Password, u.Salt, u.Hint1, u.Hint2, u.Hint3, u.Locked, u.Active,c.ProfilePic}).First(); 
+2

몇 가지 설명과 함께 코드 전용 답변을 확대 하시겠습니까? 그러면 StackOverflow가 무료 코드 작성 서비스라는 오해를 줄일 수 있습니다. – Yunnosch