0

データセットに問題があります:

2つの異なるサーバーから2つのデータセットがありますが、それらの列は同じです。

だからそれはそのようなものです:

最初のデータセット:

asset description make jobtype jan feb ... dec
 0001  mine        ik     Acc   0   0       10
 0002  yours        ic    Over  0   0       10

2番目のデータセット:

asset description make jobtype jan feb ... dec
 0001  mine        ik     Acc   10   0       10
 0002  yours       ic     Gen   0    0       0

しかし、私は2つのデータセットを次のようなものにマージしたいと思います。

asset description make jobtype lhjan imjan lhfeb lhfeb ... lhdec imdec
 0001  mine        ik     Acc     0    10      0     0        10    10
 0002  yours       ic    Over     0     0      0     0        10     0

したがって、1つのデータはすべて、同じアセットと同じジョブタイプの2番目のデータと結合されます。

linqを試しましたが、思い通りに作成できません。私はvb.netフレームワーク3.5に取り組んでいます。

私たちを手伝ってくれますか?

ジュリアン

4

2 に答える 2

1

データソース1と2が実際にデータテーブルであることを確認したいだけです。これが私の答えがこれを説明する方法です。構文はそれほど違いはありませんが、C#でも説明しています。混ざり合ったフィールドの選択を交互に行う必要があります。また、必要に応じてデータ型を調整する必要があります

from dt1 in ds["datatable1"].AsEnumerable()
join dt2 in ds["datatable2"].AsEnumerable() on
new { asset = dt1.Field<string>("asset"), jobtype = dt1.Field<string>("jobtype") } equals
new { asset = dt2.Field<string>("asset"), jobtype = dt2.Field<string>("jobtype") }
select new
{
    asset = dt1.Field<string>("asset"),
    description = dt1.Field<string>("description"),
    make = dt1.Field<string>("make"),
    ...
    lhjan = dt1.Field<int>("jan"),
    imjan = dt2.Field<int>("jan"),
    lhfeb = dt1.Field<int>("feb"),
    imfeb = dt2.Field<int>("feb"),
    ....
};

おおよそのvb構文は次のとおりです。

Dim query = _
    From dt1 In dataset.Tables["datatable1"].AsEnumerable() _
    Join dt2 In dataset.Tables["datatable2"].AsEnumerable()_
        On  new { asset = dt1.Field(Of String)("asset"), jobtype = dt1.Field(Of String)("jobtype") } _
        Equals new { asset = dt2.Field(Of String)("asset"), jobtype = dt2.Field(Of String)("jobtype") } _
    Select New With _
        { _
            // see members from c# example _
        }
于 2010-03-28T13:18:35.940 に答える
1

文字通り2つを結合したいだけの場合は、2つの異なるAdaptor.fill()で同じDATASETを使用できます。

2番目のFILLの前にNEWDATASETを使用しない場合、2つはマージされます。

于 2010-03-29T11:46:43.187 に答える