2012-08-30 2 views
0

와 SelectMany 나는이 정확히 내가 필요 반환 다음 쿼리,LINQ - 강력한 형식의 데이터 집합

var dataRows = 
      (from headerLocationRow in headerLocationDataTable 
      select WellsDao.Instance.GetAllWellData(headerLocationRow.HEADER_ID).WELL_BORE_CONSOLIDATED) 
      .SelectMany(x => x.Select()); 

있지만 확장 방법과 인라인 쿼리를 혼합하는 방법을 나는 좋아하지 않는다. 이것은 이전 프로젝트를위한 것이므로 강력하게 형식화 된 DataSets가 붙어 있습니다. 두 개의 문에서 사용하려고했지만 그렇게하지 않았습니다. headerLocationDataTable은 강력한 형식의 DataTable입니다. 그 이 ... 말도 데이터 집합을 통과하고 headerLocationDataTable에서 HEADER_ID 필드를 기준으로 WELL_BORE_CONSOLIDATED으로 강력한 형식의 DataTables의 컬렉션을 반환 WellsDao.Instance.Get.

쿼리가 작동하기 때문에 이것은 큰 문제가 아니지만 LINQ에서 핸들을 얻으려고하기 때문에이 모든 것을 인라인으로 처리하는 방법을 알고 싶습니다. 또는 이것을 더 잘 작성하는 방법을 알고 있다면 공유하십시오. 결국 WELL_BORE_CONSOLIDATED 행을 모두 포함하는 DataRow의 플랫 목록을 가져오고 자합니다. 어떤 부모가 headerLocationRow과 관련이 있는지에 관계 없습니다.

+0

'WellsDao.Instance.GetAllWellData (headerLocationRow.HEADER_ID) '는 무엇입니까? –

+0

HEADER_ID와 일치하는 ID를 가진 상위 레코드 (이 경우, 우물)에 대한 데이터 세트를 생성합니다. WELL_BORE_CONSOLIDATED를 포함하여 해당 상위에 대한 많은 하위 테이블이 있습니다. – lintmouse

답변

1

이것은 당신이 원하는 일을해야합니다

var dataRows = from headerLocationRow in headerLocationDataTable 
       from wbcRow in WellsDao.Instance.GetAllWellData(headerLocationRow.HEADER_ID).WELL_BORE_CONSOLIDATED 
       select wbcRow; 

IT는 SelectMany의 쿼리 구문입니다.

+0

물론 나는 그것을 시도했다고 생각한다고 말할 것입니다. 하지만 분명히 뭔가 잘못하고 있었어. 이것은 완벽 해. 또한 강력한 형식의 데이터 행을 반환합니다. 내 진절머리 나는 쿼리로 나중에 캐스팅해야했습니다. 고맙습니다! – lintmouse

관련 문제