【问题标题】:LINQ - SelectMany with Strongly-typed DataSetsLINQ - 具有强类型数据集的 SelectMany
【发布时间】:2012-08-30 21:48:12
【问题描述】:

我有以下查询,它返回的正是我所需要的,

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

但我不喜欢它将内联查询与扩展方法混合在一起的方式。这是一个较旧的项目,所以我坚持使用强类型数据集。我尝试使用两个 from 语句,但它不喜欢那样。 headerLocationDataTable 是一个强类型数据表。 WellsDao.Instance.Get...废话遍历DataSet并根据HEADER_ID字段返回强类型为WELL_BORE_CONSOLIDATED的DataTables集合在 headerLocationDataTable 中。

这没什么大不了的,因为查询有效,但我真的想掌握 LINQ,所以我只想知道如何将整个事情作为内联来完成。或者,如果您知道更优雅的写作方式,请分享。最终,我想返回一个包含所有 WELL_BORE_CONSOLIDATED 行的 DataRows 平面列表,无论它们与哪个父 headerLocationRow 关联。

【问题讨论】:

  • WellsDao.Instance.GetAllWellData(headerLocationRow.HEADER_ID) 是什么意思?
  • 它为父记录(在本例中为一口井)创建一个数据集,其 id 与 HEADER_ID 匹配。该父级有很多子表,包括 WELL_BORE_CONSOLIDATED。

标签: strongly-typed-dataset linq


【解决方案1】:

这应该做你想做的:

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

这是SelectMany 的查询语法。

【讨论】:

  • 当然我会说我以为我试过了。但显然我做错了什么。太棒了。它还返回强类型数据行。有了我蹩脚的查询,我不得不在事后进行投射。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多