Ich habe folgende Schleife in C#:Looping durch eine Klasse und Hinzufügen jeder Zeile eines Datentabelle fügt nur eine Zeile
PayrollItem[] it = GetPayrollItems(xmlResult);
foreach (var inv in it)
{
DataRow row = ResultsTable.NewRow();
row["EmployeeKey"] = inv.BadgeNo;
row["StoreKey"] = inv.CostCentre;
row["EmployeeName"] = inv.EmpName;
row["DateKey"] = inv.Date;
row["Incheck"] = inv.In;
row["Outcheck"] = inv.Out;
System.Diagnostics.Debug.WriteLine("inv.BadgeNo {0} i StoreKey {1}", inv.EmpName, inv.CostCentre);
ResultsTable.Rows.Add(row);
return ResultsTable;
}
wo xmlResult
eine XML-Datei mit Daten unter Verwendung eines SOAP-API-Aufruf gefüllt ist, und GetPayrollItems();
Schleifen im Wesentlichen durch die XMLfile und fügt Werte entsprechend:
public static PayrollItem[] GetPayrollItems(XmlDocument xmlDoc)
{
var items = new List<PayrollItem>();
var node = xmlDoc.LastChild; //SOAP-ENV:Envelope
if (node != null)
{
node = node.FirstChild; //SOAP-ENV:Body
if (node != null)
{
node = node.FirstChild; //ns1:wsdlGetValuesResponse
if (node != null)
{
node = node.FirstChild; //return
if (node != null)
{
int count = node.ChildNodes.Count;
foreach (XmlNode nodeItem in node.ChildNodes)
{
PayrollItem item = new PayrollItem();
item.EmpName = nodeItem["empName"].InnerText;
item.BadgeNo = nodeItem["badgeNo"].InnerText;
item.CostCentre = nodeItem["costCentre"].InnerText;
item.Date = nodeItem["date"].InnerText;
item.In = nodeItem["in"].InnerText;
item.Out = nodeItem["out"].InnerText;
items.Add(item);
}
}
}
}
}
return items.ToArray();
}
wo I PayrollItems
wie definiert haben:
public class PayrollItem
{
public string EmpName { get; set; }
public string BadgeNo { get; set; }
public string Date { get; set; }
public string In { get; set; }
public string Out { get; set; }
public string CostCentre { get; set; }
}
public class PayrollList : List<PayrollItem>
{
public void Add(string empName, string badgeNo, string date, string @in, string @out, string costCentre)
{
var data = new PayrollItem
{
EmpName = empName,
BadgeNo = badgeNo,
Date = date,
In = @in,
Out = @out,
CostCentre = costCentre
};
this.Add(data);
}
}
Ich rufe die Funktion GetPayrollItems
von der Funktion GetPayroll
. Diese Funktion benötigt einige Parameter, von denen der API-Schlüssel eines bestimmten Geschäfts ist.
Ich habe festgestellt, dass GetPayrollItems()
Funktion manchmal 20 Zeilen jeder Iteration, d. H. Für einen Speicher zurückgibt. Als ich jedoch die Tabelle ResultsTable
inspiziere, als das Programm ausgeführt wurde, bemerkte ich, dass nur eine Zeile für jeden Speicher hinzugefügt wird. Ich habe bemerkt, dass es manchmal bis zu 20 Zeilen in einer Iteration
Wenn ich die Schleife getestet, die Reihen zu ResultsTable
fügt hinzu, aber immer noch nur eine Zeile wird die ResultsTable
hinzugefügt.
Hat jemand eine Idee, warum dies sein könnte?
Sie kehren in die foreach-Schleife zurück. Also nur das erste Element im Array bekommen. – Scrobi