Как: использовать DataRelation для объединения двух DataTable в наборе данных? - PullRequest
3 голосов
/ 01 декабря 2008

Как выполнить объединение двух таблиц данных в наборе данных?

Я создал DataRelation между двумя таблицами…. Что потом?

Я смотрю на одно объяснение того, как это сделать (http://www.emmet -gray.com / Articles / DataTableJoins.htm ), которое включает копирование строк из таблиц в таблицу результатов?

Есть ли лучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 01 декабря 2008

Посмотрите, поможет ли это

DataTable person = new DataTable();
person.Columns.Add("Id");
person.Columns.Add("Name");

DataTable pet = new DataTable();
pet.Columns.Add("Id");
pet.Columns.Add("Name");
pet.Columns.Add("OwnerId");

DataSet ds = new DataSet();
ds.Tables.AddRange(new[] { person, pet });

ds.Relations.Add("PersonPet",person.Columns["Id"], pet.Columns["OwnerId"]);

DataRow p = person.NewRow();
p["Id"] = 1;
p["Name"] = "Peter";
person.Rows.Add(p);

p = person.NewRow();
p["Id"] = 2;
p["Name"] = "Alex";
person.Rows.Add(p);

p = pet.NewRow();
p["Id"] = 1;
p["Name"] = "Dog";
p["OwnerId"] = 1;
pet.Rows.Add(p);

p = pet.NewRow();
p["Id"] = 2;
p["Name"] = "Cat";
p["OwnerId"] = 2;
pet.Rows.Add(p);


foreach (DataRow personRow in person.Rows)
{
    Console.WriteLine("{0} - {1}",personRow["Id"], personRow["Name"]);
    foreach (DataRow petRow in personRow.GetChildRows("PersonPet"))
    {
        Console.WriteLine("{0} - {1}", petRow["Id"], petRow["Name"]);
    }
}
1 голос
/ 01 декабря 2008

DataTables поддерживают выбор только по своим столбцам, объединение многих таблиц не поддерживается.

0 голосов
/ 02 января 2009

Я нашел решение для той же проблемы. Что ж, я сдался и использую SQL для объединения.

Кто-то написал собственный код для присоединения к DataTable. Может быть, они полезны для вас: http://www.emmet -gray.com / Статьи / DataTableJoins.htm

...