【发布时间】:2013-01-14 06:51:34
【问题描述】:
我在 DataTable 中有大约 10 万条记录,默认值列 EdgeId 为 0
我正在使用以下linq 查询在此表中插入值
foreach (IEdge ed in edCol)
{
var row = from r in dtRow.AsEnumerable()
where (((r.Field<string>("F1") == ed.Vertex1.Name) &&
(r.Field<string>("F2") == ed.Vertex2.Name)) ||
((r.Field<string>("F1") ==ed.Vertex2.Name) &&
(r.Field<string>("F2") == ed.Vertex1.Name)))
select r;
foreach (DataRow rows in row)
{
row["EgdeId"]=ed.Id;
}
}
内部foreach loop 需要大部分时间来执行。
有没有更好的方法在DataTable 中插入记录而不为每个DataRow 使用这个foreach loop?
【问题讨论】:
-
linq 内部是一个 foreach 循环。
-
什么是 lakh Kumar?我们不会说印度语:)
-
最重要的是,您至少需要尝试才能理解。你的循环没有插入任何东西。它正在做一个选择。多少时间? 150 万行是需要提取的大量数据,如果这只是几秒钟,可能只是您的网络速度。
-
大约需要 5-6 分钟
-
有很多东西称为行或行,它们似乎在内部 for 循环中交换。我怀疑 ed 是由外部 for 循环定义的,但它丢失了。