2011-04-27 10 views
0

이것은이 여기 관련 주제에 대한 후속되는 https://stackoverflow.com/questions/1987485/conditionally-assign-c-var-as-elegant-as-it-get조건부 var 유추 유형 쿼리 LINQ to XML에 대한 대체 코딩?

내가 뭐하는 거지 경우 다음

 var query = (SearchString == "" ? 
    (
     from MEDIA in xdoc.Descendants("MEDIA") 
        select new 
        { 
         PLAY = MEDIA.Element("PLAY").Value, 
         PIC = MEDIA.Element("PIC").Value, 
         TTL = MEDIA.Element("TTL").Value 
        } 
    ): 


     from MEDIA in xdoc.Descendants("MEDIA") 
        where MEDIA.Element("TTL").ToString().ToLower().Contains(SearchString) 
        select new 
        { 
         PLAY = MEDIA.Element("PLAY").Value, 
         PIC = MEDIA.Element("PIC").Value, 
         TTL = MEDIA.Element("TTL").Value 
        } 
    ) ; 

을 어떻게 클래스 수준에서 정적 만들 수있는 쿼리 유형을 선언 할 것인가?

또는 마크 Gravell 지적 참조 된 게시물에 다른 접근 방식

IQueryable<Part> query = db.Participant; 
if(email != null) query = query.Where(p => p.EmailAddress == email); 
if(seqNr != null) query = query.Where(p => p.SequenceNumber == seqNr); 
... 

은 어떻게 선언합니다/내 경우에는 쿼리 재 코딩을? 가 여기 내 야생 시도입니다 :)

 IEnumerable<XElement> query = xdoc.Descendants("MEDIA"); 
    if (SearchString != "") 
     query = query.Where(m => m.Element("TTL").ToString().ToLower().Contains(SearchString)); 

감사합니다.

답변

0

쿼리 유형을 클래스 수준에서 정적으로 선언하려면 어떻게해야합니까?

수 없습니다. 익명의 타입은, 익명입니다 ... 그래서 변수를 선언 할 때 사용할 수있는 이름이 없습니다. 검색어의 유형은 IEnumerable<something>이지만 코드에서 something을 참조 할 수 없습니다. 따라서 쿼리의 결과를 나타내는 특정 클래스를 만들어 익명 형식 대신 사용해야합니다.