Присоединитесь к Datatables из цикла и объедините в одном наборе данных
У меня есть это требование, чтобы пользователь запросил один или несколько номеров. И мне нужно отобразить все результаты в одном наборе данных
Пример: запрос серийных номеров с
PartNumber Required Quantity
A 2
B 1
C 3
Код:
// Loop Request
foreach (DataRow a in request.Rows)
{
//select top(Quantity) SerialNumber,PartNumber where PartNumber=@PartNumber
var dt = new DataTable();
}
// 1. PartNumber A
SerialNumber Partnumber
1 A
2 A
+
// 2. PartNumber B
SerialNumber Partnumber
1 B
// 3. PartNumber C
SerialNumber Partnumber
1 C
2 C
3 C
// Загрузка в Data Set
И результат будет примерно таким:
SerialNumber Partnumber
1 A
2 A
1 B
1 C
2 C
3 C
Спасибо с уважением
2 ответа
Решение
Пожалуйста, проверьте ниже логику:
DataTable myDataTable = new DataTable();
DataColumn PartNumber = new DataColumn("PartNumber");
DataColumn RequiredQuantity = new DataColumn("RequiredQuantity");
myDataTable.Columns.Add(PartNumber);
myDataTable.Columns.Add(RequiredQuantity);
DataRow dataRowPN1 = myDataTable.NewRow();
DataRow dataRowPN2 = myDataTable.NewRow();
DataRow dataRowPN3 = myDataTable.NewRow();
dataRowPN1["PartNumber"] = "A";
dataRowPN2["PartNumber"] = "B";
dataRowPN3["PartNumber"] = "C";
dataRowPN1["RequiredQuantity"] = "2";
dataRowPN2["RequiredQuantity"] = "1";
dataRowPN3["RequiredQuantity"] = "3";
myDataTable.Rows.Add(dataRowPN1);
myDataTable.Rows.Add(dataRowPN2);
myDataTable.Rows.Add(dataRowPN3);
int i = myDataTable.Rows.Count;
DataTable joinDataTable = new DataTable();
DataColumn SerialNumber = new DataColumn("SerialNumber");
DataColumn JoinPartNumber = new DataColumn("PartNumber");
joinDataTable.Columns.Add(SerialNumber);
joinDataTable.Columns.Add(JoinPartNumber);
foreach (DataRow dr in myDataTable.Rows)
{
for (int count = 1; count <= Convert.ToInt16(dr["RequiredQuantity"]); count++)
{
DataRow joindataRow = joinDataTable.NewRow();
joindataRow["SerialNumber"] = count.ToString().Trim();
joindataRow["PartNumber"] = dr["PartNumber"].ToString().Trim();
joinDataTable.Rows.Add(joindataRow);
}
}
Response.Write(joinDataTable.Rows.Count);
Я не уверен, к каким двум таблицам вы хотите присоединиться, и по какому ключу, но не смотря на это, самым простым способом будет использование LINQ to Dataset. Например,
var query = from a in table1
join
b in table2
on
a.FkColumn = b.PKColumn select a,b;