2013-02-22 2 views
0

AdventureWorks2012 데이터베이스와 EF를 사용하여 데모 응용 프로그램 내에서 일관성을 유지하려고하지만이 Linq 문을 확장 메서드로 변환하는 데 도움이 필요합니다.확장 메서드에 쿼리 구문 구문 변환

return (from person in this.context.Persons 
     from email in this.context.EmailAddresses 
     where email.EmailAddress == emailAddress 
     select person).FirstOrDefault(); 

객체는 다음과 같습니다 BusinessEntityId는 PK입니다

public class Person 
{ 
    public int BusinessEntityId { get; set; } 
    public string PersonType {get;set;} 
    public bool NameStyle { get; set; } 
    public string Title { get; set; } 
    public string FirstName { get; set; } 
    public string MiddleName { get; set; } 
    public string LastName { get; set; } 
    public string Suffix { get; set; } 
    public int EmailPromotion { get; set; } 
    public PersonPassword Password { get; set; } 
    public virtual ICollection<PersonEmailAddress> EmailAddresses { get; set; } 
} 

public class PersonEmailAddress 
{ 
    public int BusinessEntityId { get; set; } 
    public int EmailAddressId { get; set; } 
    public string EmailAddress { get; set; } 
    public virtual Person Person { get; set; } 
} 

public class PersonPassword 
{ 
    public int BusinessEntityId { get; set; } 
    public string PasswordHash { get; set; } 
    public string PasswordSalt { get; set; } 
    public virtual Person Person { get; set; } 
} 

. 도움을 주시면 대단히 감사하겠습니다. 감사합니다 ...

답변

3

이하 정확하게 귀하의 질문에 답변 해 드리겠습니다. 그러나 확장 메서드로 쿼리를 번역해야하는 이유가 무엇인지 모르겠으므로이 대답이 사용자가 찾고있는 대답이 아니라고 생각합니다. 그렇다면이 용어에 대해 잠수 해 질문을 다시 할 수 있습니까?


첫째 : LINQ 쿼리 구문이 확장 방법에 딱 좋은 문법 설탕입니다. 귀하의 코드 :

return (from person in this.context.Persons 
     from email in this.context.EmailAddresses 
     where email.EmailAddress == emailAddress 
     select person).FirstOrDefault(); 

다음은 확장 방법으로 번역 된 LINQ 쿼리 구문입니다. 두 가지가 동일, 그들은 정확히 같은 수행과 같은 결과 제공 :

return this.context.Persons 
    .SelectMany(p => this.context.EmailAddresses, 
     (p, e) => new { Person = p, Email = e}) 
    .Where(pe => pe.Email == pe.Person) 
    .Select(pe => pe.Person) 
    .FirstOrDefault(); 

읽을만큼 좋은되지 않습니다, 이해하기 어렵습니다.

+0

* 읽는 것이 좋지 않으며 이해하기가 어렵습니다. * 나는 그 반대입니다. –