【发布时间】:2013-05-10 11:58:09
【问题描述】:
我正在使用以下查询
foreach (var callDetailsForNode_ReArrange in callDetailsForNodes_ReArrange)
{
var test = from r1 in dtRowForNode.AsEnumerable()
join r2 in dtFileRowForNode.AsEnumerable()
on r1.Field<int>("Lng_Upload_Id") equals r2.Field<int>("Lng_Upload_Id")
where ((r1.Field<string>("Txt_Called_Number") == callDetailsForNode_ReArrange.caller2.ToString()) || r1.Field<string>("Txt_Calling_Number") == callDetailsForNode_ReArrange.caller2.ToString())
select r2.Field<string>("Txt_File_Name");
var d = test.Distinct();
}
到此为止,此查询立即运行。但正如我添加的
string[] str =d.ToArray();
strFileName = string.Join(",", str);
运行大约需要 4-5 秒。是什么导致添加.ToArray() 这么慢?
【问题讨论】:
-
阅读this question的第一个答案
-
.Distinct() 是否不运行查询??
-
不。它只是添加了一个事实,即您只希望每个元素一次到可查询。
-
请记住,在 Distinct() 之后可能还有更多语句,所有这些语句都可以转换为实际的 SQL(例如)。
标签: c# winforms performance linq