2012-08-30 87 views
0

我有以下查询,返回正是我需要的,LINQ - 用的SelectMany强类型数据集

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

,但我不喜欢它融合了扩展方法的联查询。这是为了一个较旧的项目,所以我坚持使用强类型的DataSets。我试图从声明中使用两个,但它不是那样的。 headerLocationDataTable是一个强类型的DataTable。这WellsDao.Instance.Get ...废话遍历数据集,并返回数据表强类型为WELL_BORE_CONSOLIDATED基于headerLocationDataTableHEADER_ID领域的集合。

这不是一个大问题,因为查询的工作原理,但我真的想弄个LINQ的句柄,所以我只想知道如何做到这一点,因为内联。或者,如果您知道更优雅的书写方式,请分享。最终,我想找回一个包含所有WELL_BORE_CONSOLIDATED行的DataRows的平面列表,而不管它们与哪个父级headerLocationRow相关联。

+0

什么'WellsDao.Instance.GetAllWellData(headerLocationRow.HEADER_ID)'? –

+0

它为id为HEADER_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; 

这是一个SelectMany的查询语法。

+0

当然我会说,我以为我尝试过。但显然我做错了什么。太棒了。它也返回强类型的数据行。随着我的蹩脚查询,我不得不在之后施放它。谢谢! – lintmouse