我有一个应用程序,它执行SQL并将一组数据加载到数据表中。作为处理的一部分,有6或7个DataTable.Select()来过滤一些数据。每个需要处理的项目需要300毫秒。有5000个项目需要处理,所以需要25分钟。这是不可接受的。
创建POCO并将它们加载到List中,然后使用LINQ查询列表是否比使用DataTable.Select更快?
谢谢。
更新:我深入研究了一下,发现有两个数据表,每个表约有15000条记录。用于填充数据表的2个查询每个需要1秒。然后需要25分钟循环遍历字典的值属性中的5000个项目,并进行5次DataTable.Select操作。
创建POCO并将它们加载到List中,然后使用LINQ查询列表是否比使用DataTable.Select更快?
谢谢。
更新:我深入研究了一下,发现有两个数据表,每个表约有15000条记录。用于填充数据表的2个查询每个需要1秒。然后需要25分钟循环遍历字典的值属性中的5000个项目,并进行5次DataTable.Select操作。
foreach (OutputRecord Mailpiece in DictionaryMailpieces.Values)
{
try
{
DataRow[] R = DataTable1.Select("MAILPIECE = " + Mailpiece.MailpieceSetSequenceNumber + " AND (STATUS = 4034 OR STATUS = 4037)", "DAL_DATE desc");
if (R != null && R.Length > 0)
{
}
}
catch
{
}
}
DataTable.Select()
和在List
上使用LINQ
实际上会做相同的事情。您需要重新考虑您的逻辑,也许通过添加一些缓存来优化?您还可以提供一些筛选的示例。例如,如果您正在使用Select
查找单个行,则通过单个循环逐行遍历数据集可能更有效率。 - mellamokb