0

我的数据集有问题:

我有来自两个不同服务器的两个数据集,但它们具有相同的列。

所以它是这样的:

第一个数据集:

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

第二个数据集:

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

因此,来自一个的所有数据都与具有相同资产和相同工作类型的第二个数据结合在一起。

我尝试了 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 个不同的 Adaptor.fill() 中使用相同的 DATASET。

如果您在第二次 FILL 之前不使用 NEW DATASET,则 2 将被合并。

于 2010-03-29T11:46:43.187 回答