2011-10-20 3 views
0

私は、DataSet内でDataRow以上のforeachを行うことを避けるために方法で使用LINQをやろうとしている結果:のLINQとlet文に参加しようとしているが、

var results = from dataRow in DataRows 
       let MoreData = func(dataRow.ID) 
       join moreDataRow in MoreData on dataRow.ID2 = moreDataRow.ID2 
       select new 
       { 
        ID1 = dataRow.ID, 
        ID2 = dataRow.ID2, 
        ID3 = dataRow2.ID3 
       }; 

私のような何かを達成したいのですがlinqはJoinステートメントの一部としてMoreDataを使用できません。私がそれを行うことができない場合、私はDataRowsでforeachを行ってそこから行くことになるかもしれません。

要素を反復処理して元のデータから新たに生成されたデータに上記のように結合を実行するまで、利用できないデータを結合するlinqy方法はありますか?

+0

MoreDataのタイプは何ですか? – StriplingWarrior

+0

私はfunc(dataRow.Id).Join(....)のようなfuncの出力に直接参加することも、ラップアップすることもできます(... MoreData = func(dataRow.ID)select MoreData).Join(...)編集、このコメントは無視して、巨大なスケートを読んでください – Polity

答えて

6

join節は、現在の行に依存するものではなく、完全なコレクションを取る必要があります。複数のfromステートメントを使用することもできます。

var results = from dataRow in DataRows 
       from moreDataRow in func(dataRow.ID) 
       where dataRow.ID2 == moreDataRow.ID2 
       select new 
       { 
        ID1 = dataRow.ID, 
        ID2 = dataRow.ID2, 
        ID3 = dataRow2.ID3 
       }; 
+0

私はそれが理にかなっていると思います。私がその一時的なコレクションを使って参加することができるのは合理的だったようです。 – ShelbyZ

関連する問題