2013-01-03 1 views
0

많은 Linq 쿼리 결과를 외래 키 값을 기반으로 List 객체로 반환해야합니다. 이 작업을 수행하는 구문은 무엇입니까? 나는 Linq를 사용하는 것에 익숙하다. 그래서 아래는 지금까지 내 추측이다. 나는 현재 컨텍스트에 존재하지 않는 '이름'PT '를 알리는 어디에요() "조항"에 오류가 발생합니다. 어떤 도움도 대단히 감사하겠습니다!Linq 쿼리 결과를 List 객체로 반환 (조건에 따라)

 List<AgentProductTraining> productTraining = new List<AgentProductTraining>(); 

     var prodCodes = productTraining.Select(pt => new[] 
                 { 
                  pt.ProductCode, 
                  pt.NoteId, 
                  pt.ControlId 
                 }) 
                 .Where(pt.CourseCode == course.CourseCode); 

답변

1

당신은의 위치를 ​​전환 할 필요가있다 어디서 당신이 확장 방법을 사용하는 경우 선택합니다.

var prodCodes = productTraining.Where(pt => pt.CourseCode == course.CourseCode) 
           .Select(pt => new SomeRandomType 
                 { 
                  ProductCode = pt.ProductCode, 
                  NoteId = pt.NoteId, 
                  ControlId = pt.ControlId 
                 }); 

당신이 익명 형식에 의존하지 않을 수 있도록 당신이 선택 문 유형을 만드는 것이, 위에서 볼 수 있듯이 나는 또한, 추천 당신은해야 모든 것을 아는 대상 유형을 넣으십시오.

또한 CourseCode가 문자열 인 경우 pt.CourseCode.Equals(course.CourseCode)이어야합니다.

+0

흠 ... 언제든지 SomeRandomType (지금까지 String과 AgentProductTraining을 시도했습니다)을 정의하면 ProductCode, NoteId 및 ControlId에 오류가 발생하기 시작합니다. 이 메시지는 'ProductCode'가 현재 컨텍스트에 존재하지 않고 'NoteId'등 ... – NealR

+0

그 필드가 들어있는 새 객체 클래스를 만들어야하기 때문입니다. 이렇게하면 익명 형식을 사용하는 위험을 피할 수 있습니다. – IronMan84

+0

새 개체 클래스를 만들지 않고이 작업을 수행 할 수있는 방법이 있습니까? 프로그램의이 부분에 대해서만 필요하기 때문에이 클래스만으로도 새로운 클래스 라이브러리를 만들 수 있습니다. – NealR