Ich verarbeite einige Zeilen von Excel und abzufragen sie und speichern in einigen Variablen (12 var
s) wie unten. dtremoverows
enthält die Daten von Excel.Dynamische Variablen an Datentabelle binden und rekursiv verarbeiten
private System.Data.DataTable RemoveRows(System.Data.DataTable dtremoverows, bool mage)
{
System.Data.DataTable dtreturnrows = new System.Data.DataTable();
int rowcount = dtremoverows.Rows.Count;
var RemoveRows1 = dtremoverows.AsEnumerable().Where(r => r["CRE_DATE"].ToString() == "" && r["EMP_NO/Emp_Name"].ToString() == "").ToList();
var RemoveRows2 = dtremoverows.AsEnumerable().Where(r => r["CRE_DATE"].ToString() == "" && r["QTY"].ToString() == "").ToList();
var RemoveRows3 = dtremoverows.AsEnumerable().Where(r => r["CRE_DATE"].ToString().Contains("Total in Group:") || r["QTY"].ToString().Contains("Total in Group:") || r["EMP_NO/Emp_Name"].ToString().Contains("Total in Group:") || r["WO_NO"].ToString().Contains("Total in Group:") || r["ROLE_CODE"].ToString().Contains("Total in Group:") || r["CATALOG_NO"].ToString().Contains("Total in Group:")).ToList();
var RemoveRows4 = dtremoverows.AsEnumerable().Where(r => r["CRE_DATE"].ToString().Contains("Print Date/Time") || r["QTY"].ToString().Contains("Print Date/Time") || r["EMP_NO/Emp_Name"].ToString().Contains("Print Date/Time") || r["WO_NO"].ToString().Contains("Print Date/Time") || r["ROLE_CODE"].ToString().Contains("Print Date/Time") || r["CATALOG_NO"].ToString().Contains("Print Date/Time")).ToList();
var RemoveRows5 = dtremoverows.AsEnumerable().Where(r => r["EMP_NO/Emp_Name"].ToString() == "" && r["QTY"].ToString() == "").ToList();
var RemoveRows6 = dtremoverows.AsEnumerable().Where(r => r["CRE_DATE"].ToString() == "0" || r["EMP_NO/Emp_Name"].ToString() == "0" || r["CATALOG_NO"].ToString() == "0").ToList();
var RemoveRows7 = dtremoverows.AsEnumerable().Where(r => r["CATALOG_NO"].ToString().Contains("Total Amount") || r["QTY"].ToString().Contains("Total Resource Count")).ToList();
var RemoveRows8 = dtremoverows.AsEnumerable().Where(r => r["WO_NO"].ToString() == "" || r["QTY"].ToString() == "" || r["QTY"].ToString() == "0").ToList();
var RemoveRows9 = dtremoverows.AsEnumerable().Where(r => r["EMP_NO/Emp_Name"].ToString() == "<None>" && (r["QTY"].ToString() == "" || r["CATALOG_NO"].ToString() == "")).ToList();
var RemoveRows10 = dtremoverows.AsEnumerable().Where(r => r["WO_NO"].ToString() == "Work Ord" && r["EMP_NO/Emp_Name"].ToString() == "Employee #/Sales Part #").ToList();
var RemoveRows11 = dtremoverows.AsEnumerable().Where(r => r["QTY"].ToString() == "0" || r["QTY"].ToString() == "").ToList();
var RemoveRows12 = dtremoverows.AsEnumerable().Where(r => r["CRE_DATE"].ToString() == "" && r["WO_NO"].ToString() == "" && r["EMP_NO/Emp_Name"].ToString() == "" && r["ROLE_CODE"].ToString() == "" && r["CATALOG_NO"].ToString() == "" && r["QTY"].ToString() == "" && r["PLAN_LINE_NO"].ToString() == "" && r["WORK_ORDER_COST_TYPE"].ToString() == "" && r["WORK_ORDER_ACCOUNT_TYPE"].ToString() == "" && r["ORG_CODE"].ToString() == "" && r["CMNT"].ToString() == "").ToList();
}
Dann füge ich jede der Variablen als Schleife. Kann ich das als eine einzelne rekursive Schleife verwenden, weil ich denke, dass meine Codierung (unten) veraltet ist.
try
{
if (RemoveRows1.Count() != 0)
{
foreach (var row in RemoveRows1)
{
dtremoverows.Rows.Remove(row);
}
}
}
catch { }
try
{
if (RemoveRows2.Count() != 0)
{
foreach (var row in RemoveRows2)
{
dtremoverows.Rows.Remove(row);
}
}
}
catch { }
......... Und so weiter .. bis RemoveRows12
und dann verschmelzen wie:
dtreturnrows.Merge(dtremoverows);
Dies funktioniert, aber ich brauche von besserem Ansatz wirklich dieser Kodierung. Wenn Sie irgendwelche Vorschläge haben, antworten Sie bitte.
Hallo Kumpel, ich benutze viele Variablen, weil ich aus verschiedenen Zeilen aus Excel extrahiere und sie gepflegt werden müssen. Danke für Ihren Vorschlag. Wenn Sie andere haben, würde ich es gerne hören. –
Sie können 'verschiedene Zeilen' in where-Bedingung angeben, da Sie' LINQ' verwenden. –
Ich folgte Ihrem Snippet. Zeigt den Operator || an Kann nicht für Lambda- und Bool-Operationen verwendet werden –