PDA

View Full Version : سوال: ترکیب دو دیتاتیبل



shahin60
پنج شنبه 15 تیر 1391, 13:25 عصر
سلام به اساتید
میخوام دو تا دیتاتیبل متفاوت با هم ترکیب کنم البته دوتا شون یه کلید دارن ،چطوری شرط بزارم که جایی که کلید دیتاتبیل باهم برابرن ترکیب بشن و به پاس بدم به کزیستال رپورت

mmd2009
پنج شنبه 15 تیر 1391, 15:11 عصر
با سلام

یک متد برات نوشتم که میتونی ازش استفاده بکنی :



private DataTable JoinTwoTable(DataTable dt1, DataTable dt2, string t1Fk, string t2Pk)
{
return (from t1 in dt1.Rows.Cast<DataRow>()
join t2 in dt2.Rows.Cast<DataRow>() on t1[t1Fk] equals t2[t2Pk]
select t1).CopyToDataTable();

}



هر جددول رابطه دار یک کلید اصلی و یک کلید خارجی داره ( مطلقا منظورم این نیست که حتما رابطه داشته باشن ، بدون رابطه هم میشه این کارو کرد) با استفاده از دستوری داخل متد عمل Join بین جداول انجام میشه و داده هایی رو برمیگردونه که مثل هم باشن 2 پارامتری کلیدی اون.


موفق باشید

tooraj_azizi_1035
پنج شنبه 15 تیر 1391, 16:19 عصر
سلام
متد Merge:


private static void DemonstrateMergeTable()
{
DataTable table1 = new DataTable("Items");

// Add columns
DataColumn idColumn = new DataColumn("id", typeof(System.Int32));
DataColumn itemColumn = new DataColumn("item", typeof(System.Int32));
table1.Columns.Add(idColumn);
table1.Columns.Add(itemColumn);

// Set the primary key column.
table1.PrimaryKey = new DataColumn[] { idColumn };

// Add RowChanged event handler for the table.
table1.RowChanged += new
System.Data.DataRowChangeEventHandler(Row_Changed) ;

// Add ten rows.
DataRow row;
for (int i = 0; i <= 9; i++)
{
row = table1.NewRow();
row["id"] = i;
row["item"] = i;
table1.Rows.Add(row);
}

// Accept changes.
table1.AcceptChanges();
PrintValues(table1, "Original values");

// Create a second DataTable identical to the first.
DataTable table2 = table1.Clone();

// Add column to the second column, so that the
// schemas no longer match.
table2.Columns.Add("newColumn", typeof(System.String));

// Add three rows. Note that the id column can't be the
// same as existing rows in the original table.
row = table2.NewRow();
row["id"] = 14;
row["item"] = 774;
row["newColumn"] = "new column 1";
table2.Rows.Add(row);

row = table2.NewRow();
row["id"] = 12;
row["item"] = 555;
row["newColumn"] = "new column 2";
table2.Rows.Add(row);

row = table2.NewRow();
row["id"] = 13;
row["item"] = 665;
row["newColumn"] = "new column 3";
table2.Rows.Add(row);

// Merge table2 into the table1.
Console.WriteLine("Merging");
table1.Merge(table2, false, MissingSchemaAction.Add);
PrintValues(table1, "Merged With table1, schema added");

}

private static void Row_Changed(object sender,
DataRowChangeEventArgs e)
{
Console.WriteLine("Row changed {0}\t{1}", e.Action,
e.Row.ItemArray[0]);
}

private static void PrintValues(DataTable table, string label)
{
// Display the values in the supplied DataTable:
Console.WriteLine(label);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.Write("\t " + row[col].ToString());
}
Console.WriteLine();
}
}