группирование данных из двух наборов данных - PullRequest
0 голосов
/ 28 марта 2010

У меня проблема с набором данных:

У меня есть два набора данных с двух разных серверов, но они имеют одинаковые столбцы.

вот так:

Первый набор данных:

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.

Не могли бы вы мне помочь?

Julien

Ответы [ 2 ]

1 голос
/ 29 марта 2010

Если вы буквально просто хотите присоединиться к ним, вы можете использовать один и тот же DATASET в двух разных Adaptor.fill ().

Если вы не используете НОВЫЙ ДАННЫЙ ДАННЫЙ до второго ЗАПОЛНЕНИЯ, объединятся 2.

1 голос
/ 28 марта 2010

Я просто хочу убедиться, что источники данных 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 _
        }
...