Проблема с рефакторингом метода returen datatable to list<T> ?
Я делаю рефакторинг для метода, который выглядит следующим образом :
private static DataTable getOrdersAll(string OrderID, string OrderLineNo = "") { // do some queries etc }
я превратил его в нечто подобное :
private static List<BranchSales> getOrdersAll(string OrderID, string OrderLineNo = "")
так я превратилась из объекта DataTable вернуться в список вернуться в<BranchSales&ГТ; до сих пор хорошая
моя проблема в том, что этот метод имеет ссылку и в ссылке выглядит так : "посмотрите, что вы пробовали" ...я просто публикую несколько строк из этого метода....
как я могу изменить DataRow? должен ли я создать новый класс со свойствами, представляющими Datarow ? я застрял здесь, что я должен сделать, чтобы изменить все таблицы данных и потоки данных в список<T>
====== = Обновите вопрос=============
Я выложил весь код целиком
моя проблема сейчас чтобы изменить способ " частный недействительными FuellenStatus(строка AuftragNr)"
за объяснение я буду очень рад
спасибо заранее
Что я уже пробовал:
private static List<BranchSales> getOrdersAll(string OrderID, string OrderLineNo = "") { List<BranchSales> elements = new List<BranchSales>(); using (IDbConnection connection = SQL_DB.getSQL_Connection()) { connection.Open(); DynamicParameters parameters = new DynamicParameters(); parameters.Add("@OrderID", OrderID); elements = connection.Query<BranchSales>("spGetOrdersAll_Intrax_Test", parameters, commandTimeout: 180,commandType: CommandType.StoredProcedure).AsList(); } return elements; }
Вот что я изменил в нем .
"Ссылка на метод" :
public static List<BranchSales> getOrdersAll(string OrderNo) { return getOrdersAll(OrderNo, string.Empty); }
метод getOrderAll будет вызываться в этом методе :
public DataTabel IntraxAuftrag; private void FuellenStatus(string AuftragNr) { DataTable OffeneBestellung = SQL_DB.getOrdersAll(AuftragNr); IntraxAuftrag.Columns.Clear(); string sAuftrag = string.Empty; IntraxAuftrag.Columns.Add("Status"); IntraxAuftrag.Columns.Add("StatusColor"); IntraxAuftrag.Columns.Add("StatusKey"); foreach (DataTable dr in OffeneBestellung.Rows) { if (dr[InfoE_Mail_gesendet] == "true") { AnzeigeZahlungen(dr[CustomerNo]); if (sAuftrag != dr.Auftrag) { IntraxAuftrag.Columns.Add(dr["Auftrag"].ToString()); sAuftrag = dr["Auftrag"].ToString(); } DataRow row = GetRow(IntraxAuftrag, "BranchSaleID", "UNVISIBLE", sAuftrag); row[dr["Auftrag"].ToString()] = dr["branchSaleID"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Sendungslink", "UNVISIBLE", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Sendungslink"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Auftrag", "ALLGEMEIN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Auftrag"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Zahlungsart", "ALLGEMEIN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Zahlungsart"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Artikel", "ALLGEMEIN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["itemNo"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Menge", "ALLGEMEIN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["quantity"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Filiale", "ALLGEMEIN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["branchCode"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Adresse", "ALLGEMEIN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["name"].ToString() + dr["street"].ToString() + dr["postcode"].ToString() + "-" + dr["city"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } if (dr["cancellation"].ToString() == "False") { row = GetRow(IntraxAuftrag, "Laufzettel gedruckt", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Laufzettel_gedruckt_am"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "bestätigt", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Bestellbest_Zeit"].ToString(); //Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "bezahlt", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Zahlungeingegangen_zeit"].ToString();//Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Rechnung", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Rechnungsdruck_Zeit"].ToString();//Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Filialrechnung", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Rechnungsdatum"].ToString();//Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Ver. beauftrag", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Versanddienstleider_Zeit"].ToString();//Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "versendet", "VERSAND", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Versandbestätigt_Zeit"].ToString();//Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Tracking", "VERSAND", sAuftrag); row[dr["Auftrag"].ToString()] = dr["Tracking_Zeit"].ToString();//Datum Uhrzeit anzeigen, wenn leer rot, ansonsten grün try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "zugestellt/unterwegs", "KUNDE", sAuftrag); DataTable dtDelivery = SQL_DB.GetDeliveryOrder(dr["branchSaleID"].ToString(), string.Empty); if (dtDelivery.Rows.Count > 0) { row[dr["Auftrag"].ToString()] = dtDelivery.Rows[0]["StatusTrex"].ToString(); } try { IntraxAuftrag.Rows.Add(row); } catch { } if (dr["BranchShipment"].ToString() == "True") { DataTable dtAusFil = SQL_DB.getAuslieferungsFiliale(AuftragNr, Convert.ToInt32(dr["OrderLineNo"].ToString())); if (dtAusFil.Rows.Count > 0) { row = GetRow(IntraxAuftrag, "Übergabe in Filiiale", "INTERN", sAuftrag); row[dr["Auftrag"].ToString()] = dtAusFil.Rows[0]["branchCode"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } row = GetRow(IntraxAuftrag, "Übergabe an Kunde", "KUNDE", sAuftrag); row[dr["Auftrag"].ToString()] = dtAusFil.Rows[0]["BranchShipmentReceived_delivered_Date"].ToString(); try { IntraxAuftrag.Rows.Add(row); } catch { } } } } else { row = GetRow(IntraxAuftrag, "Status", "STORNIERT", sAuftrag); row[dr["Auftrag"].ToString()] = "STORNIERT"; try { IntraxAuftrag.Rows.Add(row); } catch { } } IntraxAuftrag = ReadRetouren(dr["branchSaleID"].ToString(), dr["Auftrag"].ToString(), IntraxAuftrag); } } }