2010-01-28 5 views
0

가난한 질문 제목에 대한 사과 - 내가하는 일을 설명하는 방법을 잘 모르겠다. 만약 내가 요구하는 것이 진짜 이름이 있다면!Linq를 사용하여 엔티티, 링크 된 엔티티, 링크 된 엔티티 목록 선택

나는 프로젝트 그룹이 할당 될 수있는 프로그램을 가지고 있으며, 차례로 할당 된 출력 그룹을 가질 수 있습니다.

저는 프로젝트를 통해 하나의 큰 출력 목록으로 프로그램의 모든 출력을 얻고 싶습니다. 나는 이것을 가지고있다 :

From pp In Me.ProgrammeProjects Select pp.Project.Outputs 

기본적으로 나는 출력 목록의 목록을 얻는다. (출력의 EntitySet 중 Ienumerable).

나는 짐마차를 치며 Linq를 통해 자신의 길을 강요하고 있으며 이것에 대한 예를 찾을 수 없다 (또는 내가 그것을 볼 때 그것을 인식 할 수 없다). 어떻게하면 루프와 Linq 대신에 각 EntitySet을 거쳐 더 큰 목록에 내용을 추가하는 대신 Linq를 사용하여이 작업을 수행 할 수 있습니까?

감사합니다.

답변

1

또는 직접 LINQ 컨텍스트에 대해 이동 :

from o in context.Outputs 
where o.Project.ProgrammeProjects.ID = 1 
select o 

반대가 너무 일을하고 데이터 컨텍스트의 테이블에서 직접 쿼리합니다.

+0

이것이 최선의 선택이라고 생각합니다. 직접 출력에 대해 생각하지 않았습니다. - 이것은 훨씬 쉬운 옵션입니다. 출력에 대한 저장소를 만들어야합니다 ... 건배 Brian –

0

특정 프로그램에 대한 출력 목록을 얻으려고합니까?

그렇다면

,이 같은 것을 시도 :

var result = (from pp in ProgrammeProjects 
where pp.Name.Equals("ProjectA") 
select pp.Project.Outputs).ToList(); 

또는

는 출력 목록을 일단

, 당신은 하위 집합을 얻기 위해 람다 식을 사용할 수 있습니다.

var result = (from pp in ProgrammeProjects 
select pp.Project.Outputs).ToList(); 

var subResult = result.FindAll(target => target.OutputParameter.Equals("findThisValue"); 

이 작업을 수행 하시겠습니까?

그렇지 않다면 데이터 구조에 대한 세부 정보와 검색하려는 내용을 입력하십시오. 최선을 다해 도와 드리겠습니다.

패트릭.

+0

안녕하세요 패트릭, 지금 퇴근했지만이 좋아 보인다, 내일을 시도하고 알려, 감사 –

+0

안녕하세요 패트릭, 난 당신의 코드를 시도하고 내가 원하는 것을 얻을 수없는 것입니다. 아주 좋은 것은 아니지만 당신에게 난 후 최종 결과의 아이디어를 줄 것이다 - 대신 내 솔루션을 게시했습니다. 건배 –

0

이 방법을 사용하는 방법이지만 데이터 양이 증가하면 속도가 느려질 수 있습니다.

Dim allOutputs As New Generic.List(Of Output) 

    Dim outputLists = From pp In Me.ProgrammeProjects Select pp.Project.Outputs.ToList 

    For Each outputList In outputLists 
     Dim os = From o In outputList Where o.OutputTypeID = Type Select o 
     allOutputs.AddRange(os) 
    Next 

    Return allOutputs 
0

아직 어떤 종류의 데이터를 가져 오려고하는지 혼란 스럽습니다. 여기 내가 이해하는 바가 있습니다.

  1. 당신은 각 프로그램은 많은 출력을 가질 수 많은 프로젝트
  2. 각 프로젝트를 할 수있는 프로그램
  3. 의 목록을 가지고있다.

목표 : 특정 유형의 모든 출력을 찾으십시오. 이게 옳은 거니?

그렇게 같은 뭔가 일을해야 프로젝트 나 프로그램에 관련된 모든 데이터를 검색하는 것처럼 그것은 보이지 않는 :

Dim allOutputs As Generic.List(Of Outputs) = (From output In Me.Outputs Where output.OutputType.Equals(Type) Select output).ToList() 

나를 어떻게되는지 알려주세요.

패트릭.

+0

안녕하세요 Patrick, 귀하의 권리 유형의 출력 목록을 원하지만 선택할 출력 목록이 없습니다. 목록 목록이 있습니다. 모든 목록을 하나의 목록으로 병합하고 싶습니다. for 루프 내 대답은 내가 어떻게 해냈다지만 Linq 더 좋은 방법이있을 줄 알았는데. 건배 –