0

次のように、LINQ を使用して2 つのクエリDataTables(Excel ファイルの解析によって生成されたもの) をクエリし、一致するフィールド "UPC" でそれらを結合します。

Dim query = From c In dt.AsEnumerable() _
Join r In dtUnits.AsEnumerable() _
On c.Field(Of String)("UPC") Equals r.Field(Of String)("UPC") _
Select New With {.UPC = r.Field(Of String)("UPC")}

さらに、この LINQ クエリの結果を DataTable にコピーしたいと考えています。メソッド を見つけましたCopyToDataTable()が、それは .NET 4.5 にあり、サーバーは .NET 3.5 のみをサポートしています。

VB .NET 3.5 でこの機能をエミュレートするにはどうすればよいですか?

ありがとうございました!

4

3 に答える 3

3

CopyToDataTable.NET 35 以降、既に存在します。しかし、問題はDataTable、匿名型から「ゼロから」を作成することです。それはうまくいきません。

CopyToDataTableのみの拡張ですIEnumerable<DataRow>したがって、結合されたもの DataRowから1つを選択する必要がありますDataTables:

Dim query = From c In dt.AsEnumerable() _
            Join r In dtUnits.AsEnumerable() _
            On c.Field(Of String)("UPC") Equals r.Field(Of String)("UPC") _
            Select c
Dim table = query.CopyToDataTable()

または、リフレクションを使用するこれObjectShredderを使用するため、最も効率的な方法ではありません( C#実装)。

于 2012-12-21T14:24:25.873 に答える
1

この記事を見てください:

http://codecorner.galanter.net/2009/12/17/grouping-ado-net-datatable-using-linq/

メソッドを使用できます.toDataTableが、LINQ クエリが実際の DataTable 行を返す場合に限ります。カスタムタイプの場合、記事コードに添付して同じことを実行できます。

于 2012-12-21T14:26:04.797 に答える
-1

この記事 LINQ TO DATATABLE in WCF を読んで、Adventure Database に接続してください。

データセットは IEnumerable/IQueryable インターフェイスを実装していません。

だから、この記事を読んでください。

http://www.wnewsone.com/tutorials/wcf/ShowArticle.aspx?articleid=20143

于 2012-12-27T09:23:42.007 に答える