我有一份只显示60000条记录的报告。我必须检查60001是否具有60000的相同员工ID,然后它必须包含该记录。怎么做?
示例:有3个员工ID和3个部门(列名称)
e1 d1
e1 d2
e2 d1
e2 d2
e2 d3
但是根据我的正确逻辑,我会得到记录直到e2 d1
,因为它有60000条记录,但我也想要所有e2记录。
数据将来自oracle db,代码位于c#中。报告通过C#代码发送,并使用oracle db。
我的报告只能有60000条记录,但在该记录中,如果员工ID(示例1,2,3)有更多的分区(1,2,3),那么我的代码会给出记录,直到e1 d1 e1 21 e1 d3 e2 d1但我也想要e2的所有记录。我怎么能这样做?
代码示例
for (int j = 1; j <= rowCounter && j <= maxRowCount; j++)
{
DataRow drhrReport = dtReportData.Rows[j];
for (int colCounter = 0; colCounter < iColCount; colCounter++)
{
if (!Convert.IsDBNull(drhrReport[colCounter]))
{
swhrReport.Append(Convert.ToString(drhrReport[colCounter]));
}
if (colCounter < iColCount - 1)
{
swhrReport.Append(",");
}
}
答案 0 :(得分:0)
我假设maxRowCount
设置为60,000。在这种情况下,您可以修改代码如下:
string lastEmpId = null;
for (int j = 1; j <= rowCounter; j++)
{
DataRow drhrReport = dtReportData.Rows[j];
if (j == maxRowCount) {
lastEmpId = (string)drhrReport[colEmpId];
} else if ((j > maxRowCount) && (string)drhrReport[colEmpId] != lastEmpId)
break;
}
for (int colCounter = 0; colCounter < iColCount; colCounter++)
{
if (!Convert.IsDBNull(drhrReport[colCounter]))
{
swhrReport.Append(Convert.ToString(drhrReport[colCounter]));
}
if (colCounter < iColCount - 1)
{
swhrReport.Append(",");
}
}
所以,这当然没有经过考验,但希望你能得到这个想法。我已经将对maxRowCount的检查移动到for循环的主体中,并使它在最后一行上保存了empId,然后在它再次发生变化时突破for循环。 / p>