0

必要なものを正確に返す次のクエリがあります。

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

しかし、インラインクエリと拡張メソッドを組み合わせる方法は好きではありません。これは古いプロジェクト用であるため、強く型付けされたデータセットで立ち往生しています。2つのfromステートメントを使用しようとしましたが、それは気に入らなかった。 headerLocationDataTableは、強く型付けされたDataTableです。そのWellsDao.Instance.Get ...ナンセンスはDataSetをトラバースし、headerLocationDataTableのHEADER_IDフィールドに基づいてWELL_BORE_CONSOLIDATEDとして強く型付けされたDataTablesコレクションを返します

クエリが機能するため、これは大したことではありませんが、私は実際にLINQを処理しようとしているので、このすべてをインラインで実行する方法を知りたいだけです。または、これをよりエレガントに書く方法を知っている場合は、共有してください。最終的には、関連付けられている親のheaderLocationRowに関係なく、すべてのWELL_BORE_CONSOLIDATED行を含むDataRowのフラットリストを取得したいと思います。

4

1 に答える 1

1

これはあなたが望むことをするはずです:

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

これは、のクエリ構文ですSelectMany

于 2012-08-30T22:03:07.467 に答える