我有一個包含2.5M行的數據表。我想過濾數據表中的一些行。 DataTable的在數據表中過濾有更快的方法嗎?
列:
[IntCode] long
[BDIntCode] long
[TxnDT] DateTime
[TxnQuantity] decimal
[RecordUser] long
[RecordDT] DateTime
我的代碼是象下面這樣:
foreach (var down in breakDowns)
{
sw.Start();
var relatedBreakDowns = firstGroup.Where(x => x.RelatedBDIntCode == down.ProcessingRowIntCode).ToList();
if (relatedBreakDowns.Count == 0) continue;
var filters = string.Format("BDIntCode IN ({0})", string.Join(",", relatedBreakDowns.Select(x => x.BDIntCode)));
var filteredDatatable = datatable.Select(filters, "BDIntCode");
foreach (var dataRow in filteredDatatable)
{
var r = dataTableSchema.NewRow();
r["RecordUser"] = recordUser;
r["RecordDT"] = DateTime.Now;
r["TxnQuantity"] = dataRow["TxnQuantity"];
r["TxnDT"] = dataRow["TxnDT"];
r["BDIntCode"] = down.ProcessingRowIntCode;
dataTableSchema.Rows.Add(r);
}
sw.Stop();
count++;
Console.WriteLine("Group: " + unrelatedBreakDownGroup.RelatedBDGroupIntCode + ", Count : " + count + ", ElapsedTime : ms = " + sw.ElapsedMilliseconds + ", sec = " + sw.ElapsedMilliseconds/1000f);
sw.Reset();
}
的故障列表的數量是1805年,FirstGroup的列表的數量是9880
第一個問題:爲什麼你在'DataTable'中有? –
我已閱讀你的答案。我已經使用框架返回一個數據表。但我可以改變它。 – sinanakyazici
是公平的,我的答案中的大部分都可以在DataTable中正常工作 - 它不太方便,並且有一些不必要的開銷。這不是最大的問題。 –