Thomas Darimont
Erfahrenes Mitglied
Hallo!
Hier mal ein kleines Beispiel wie man über die Relations einer DataTable von einer DataRow aus traversieren kann:
Gruß Tom
Hier mal ein kleines Beispiel wie man über die Relations einer DataTable von einer DataRow aus traversieren kann:
C#:
using System;
using System.Collections.Generic;
using System.Text;
using DataTable = System.Data.DataTable;
using DataRow = System.Data.DataRow;
using DataColumn = System.Data.DataColumn;
using DataRelation = System.Data.DataRelation;
using DataSet = System.Data.DataSet;
using DataView = System.Data.DataView;
namespace De.Tutorials.Training
{
public class InMemoryMappingExample
{
public static void Main(string[] args)
{
Console.WriteLine("InMemoryMappingExample");
DataTable articleTable = CreateDummyTable("article", new string[] { "ID", "VALUE" }, new object[][] { new object[] { 1, "Gummibärchen" }, new object[] { 2, "Bitburger" }, new object[] { 3, "Colorado" }, new object[] { 4, "Salami" } });
DataTable groupTable = CreateDummyTable("group", new string[] { "ID", "VALUE" }, new object[][] { new object[] { 1, "SÜßWaren" }, new object[] { 2, "Bier" }, new object[] { 3, "Wurst" } });
DataTable articleGroupMappingTable = CreateDummyTable("articleGroupMapping", new string[] { "MAPPING_ID", "LEFT_ID", "RIGHT_ID" }, new object[][] { new object[] { 1, 1, 1 }, new object[] { 2, 2, 2 }, new object[] { 3, 3, 1 }, new object[] { 4, 4, 3 } });
DataSet dataSet = new DataSet("joinedDataSet");
DataView mappingDataView = dataSet.DefaultViewManager.CreateDataView(articleGroupMappingTable);
mappingDataView.Sort = "RIGHT_ID ASC";
articleGroupMappingTable = mappingDataView.ToTable();
dataSet.Tables.Add(articleTable);
dataSet.Tables.Add(groupTable);
dataSet.Tables.Add(articleGroupMappingTable);
articleTable.ChildRelations.Add("article", articleTable.Columns["ID"], articleGroupMappingTable.Columns["LEFT_ID"]);
groupTable.ChildRelations.Add("articleGroup", groupTable.Columns["ID"], articleGroupMappingTable.Columns["RIGHT_ID"]);
foreach (DataRow mappingDataRow in articleGroupMappingTable.Rows)
{
PrintRow(mappingDataRow);
}
}
private static void PrintRow(DataRow mappingDataRow)
{
StringBuilder buffer = new StringBuilder();
DataRow articleGroupDataRow = mappingDataRow.GetParentRow("articleGroup");
buffer.Append("Group: ");
buffer.Append(articleGroupDataRow["ID"]);
buffer.Append(" ");
buffer.Append(articleGroupDataRow["VALUE"]);
DataRow articleDataRow = mappingDataRow.GetParentRow("article");
buffer.Append(" Article: ");
buffer.Append(articleDataRow["ID"]);
buffer.Append(" ");
buffer.Append(articleDataRow["VALUE"]);
Console.WriteLine(buffer);
}
private static DataTable CreateDummyTable(string tableName, string[] columnNames, object[][] rowData)
{
DataTable dataTable = new DataTable();
dataTable.TableName = tableName;
foreach (string columnName in columnNames)
{
DataColumn dataColumn = new DataColumn(columnName);
dataTable.Columns.Add(dataColumn);
}
foreach (object[] row in rowData)
{
dataTable.Rows.Add(row);
}
return dataTable;
}
}
}
Gruß Tom