2013-02-10 3 views
3

동적 linq에서이 검색어를 어떻게 작성합니까? 선택을하는 방법을 알고 있지만 어떻게해야합니까?동적 LINQ에서 "let"하는 방법은 무엇입니까?

var qry = from sr in data.Addresses 
        let AddressType_Desc = sr.AddressType.AddressType_Desc 
        let Country_Desc = sr.Country.Country_Desc 
        where sr.Customer_GUID == CustomerGuid 
        select new 
          { 
           sr.Address_GUID, 
           sr.People_GUID, 
           sr.AddressType_GUID, 
           AddressType_Desc, 
           sr.Address1, 
           sr.Address2, 
           sr.City, 
           sr.State, 
           sr.Zip, 
           sr.County, 
           sr.Country_GUID, 
           Country_Desc, 
           sr.UseAsMailing 
          }; 
+1

"동적 LINQ"는 무엇을 의미합니까? 표현식 (메소드) 구문은 무엇입니까? – mipe34

+0

나는 System.Linq.Dynamic을 사용하여 문자열을 정의 할 수있는 지점을 말합니다. – Jonathan

+0

그 시점에서 필자는 t-sql을 작성할 것입니다. – Jonathan

답변

4

dynamic LINQ뿐만 아니라 LINQ 표현 방법 구문 let의 상응 없다.

Let은 검색어를 더 쉽게 읽을 수 있도록 도와줍니다. 별칭 또는 로컬 변수로 작동합니다. 메서드 구문에서 선언 된 메서드의 범위 밖에서 메서드 구문에 액세스 할 수 없다는 것을 상상할 수 있습니다.

let 변수 시작을 select에 넣기 만하면됩니다.

var qry = data.Adresses.Where(sr => sr.Customer_GUID == CustomerGuid) 
         .Select(sr => new { 
              sr.Address_GUID, 
              .... 

              sr.AddressType.AddressType_Desc, 
              sr.Country.Country_Desc 
             }); 

또는 동적 LINQ와 유사한 (string으로 절을 선택) : LINQ 메서드 구문이 같은

var qry = data.Adresses.Where(sr => sr.Customer_GUID == CustomerGuid) 
         .Select("new (Address_GUID, AddressType.AddressType_Desc, Country.Country_Desc)"); 

그리고 당신과 같은 결과를 얻을 것이다 linq 쿼리 구문.

다른 표현 방법과 비슷합니다. 필요한 것은 let 별칭 대신 직접 값을 사용하는 것입니다.