2017-05-31 1 views
0

を、私は、内側の2つのDataTableに参加するためにLINQを使用しようとしていますし、すべての列の両方のDataTableのLINQ - 2つのテーブルに参加して、すべての列を選択してVB.Net

Dim qryResult = (From qryAllItemsAllFields In dtAllItemsAllFields 
       Join qryGetAttributes In dtGetAttributes On qryGetAttributes.Field(Of String)("ITNBR") Equals qryAllItemsAllFields.Field(Of String)("itemnum") 
       Select New With {qryGetAttributes, qryAllItemsAllFields}).ToList() 

この結果を持って結果を返しますクエリは決して結果を返しません(私はチェックし、この結合の結果は結果を返すべきです)。私はかなりlinqに新しいので、任意の指導は非常に感謝されるだろう。

更新:コードで生成されたリストの項目数が6000(結果が生成されている)であることがわかりましたが、リストをGridViewにバインドしようとするとエラーがスローされます IDが 'gvTest'のGridViewのデータソースには、列を生成するためのプロパティまたは属性がありませんでした。データソースにコンテンツがあることを確認します。
+0

「等しい」の両側にある項目を逆にしてみてください。私は秩序が重要だと信じている。 –

+0

私が上記のことを無視してください。それは問題ではない。しかし、どのようにqryResultを使用していますか?これは、それぞれがDataRowである2つの特性を持つオブジェクトのコレクションになります。 GridViewは、DataRowのコレクションだけを期待しています。 –

+0

私は単にqryResultをgridviewのデータソースとして使用しようとしていますが、それはその方法ではないと思います。 – CouldUseAHand

答えて

0

かなり重いコードを使用すると、匿名のオブジェクトをDictionaryに変換して組み合わせるか、またはExpandoObjectに変換して組み合わせることができます。これにより、多数のフィールドを扱うことができなくなり、LINQがないSQL *ワイルドカードのようなものが提供されますが、本番用に推奨することはわかりません。

Dim qryResult = (From qryAllItemsAllFields In dtAllItemsAllFields 
       Join qryGetAttributes In dtGetAttributes On qryGetAttributes.Field(Of String)("ITNBR") Equals qryAllItemsAllFields.Field(Of String)("itemnum") 
       Select qryGetAttributes.ToExpando().AddAnon(qryAllItemsAllFields)).ToList() 

私の拡張機能は、C#で書かれているが、上記の結果は、おそらくGridViewに許容可能である平ら両方のソースオブジェクトからすべてのフィールドを持つExpandoObject、です。

関連する問題