Как создать datatable со следующим результатом?
Я должен был получить два файла excel из загрузки пользователя с помощью OleDb. Я должен был получить следующий результат:
| Location | Item Type | AmountA | AmountB | Type | | A | A | 5 | 4 | |
Но я хочу получить следующий результат:
| Location | Item Type | AmountA | AmountB | Type | | A | A | 5 | | A | | A | A | | 4 | B |
Что я уже пробовал:
Это мои коды.:
public DataTable CombineofAdjustmentNTransaction(DataTable A, DataTable B) { DataTable TableE = new DataTable(); TableE.Columns.Add(new DataColumn("Location")); TableE.Columns.Add(new DataColumn("Item Type")); TableE.Columns.Add(new DataColumn("AmountA)")); TableE.Columns.Add(new DataColumn("AmountB")); TableE.Columns.Add(new DataColumn("TransactionType")); foreach (DataRow dtE in A.Rows) { foreach (DataRow rowB in B.Rows) { if (rowB["Location"].ToString() == dtE["Location"].ToString() && rowB["Item Type"].ToString() == dtE["Item Type"].ToString() ) { var newRow = TableE.NewRow(); newRow["Location"] = dtE["Location"]; newRow["Item Type"] = dtE["Item Type"]; if(dtE["Type"].ToString() == "GRN") { newRow["AmountA"] = dtE["AmountA"]; newRow["Type"] = "GRN"; } if (rowB["Type"].ToString() == "STK_ADJ") { newRow["AmountB"] = rowB["AmountB"]; newRow["Type"] = "STK_ADJ"; } TableE.Rows.Add(newRow); } } } return TableE; } }
Wendelius
Можете ли вы опубликовать пример для исходных данных. Чтобы решить эту проблему, мы должны посмотреть, какие данные вы пытаетесь преобразовать.
jaket-cp
Глядя на циклы foreach
Если первое условие истинно (местоположение и тип элемента совпадают)
когда DataTable строка "Type" != "GRN"
и DataTable B строка "Type" != "STK_ADJ"
Я думаю, что будет произведен ряд следующих действий:
| Местоположение | Тип Товара | Сумма | Сумма | Тип |
| А | А | | |
Это то, что вы ожидаете?
Другой вопрос:
Если первое условие истинно (местоположение и тип элемента совпадают)
когда DataTable строка "Type" == "GRN"
вы хотите добавить ряд?
когда DataTable B row "Type" == "STK_ADJ"
вы хотите добавить ряд?
Если это так, то при тестировании на них - добавьте новую строку для каждого истинного условия