1

2 つのテーブルに対して LINQ で結合操作を実行していますが、小さなデータセットの実行にほとんどの時間がかかっています。以下はLINQクエリです

 for (int i = 0; i <= 200; i++)
 {
      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") == "999") || r1.Field<string>("Txt_Calling_Number") == "888")
                 select r2.Field<string>("Txt_File_Name");

       string[] str = test.Distinct().ToArray();                
}

ここdtRowForNodeでは、約 7500 行の2 つのデータテーブルと、 dtFileRowForNode12 行しかないデータテーブルがあります。

このクエリを 200 回ループします。for ループを完了するのに約 6 ~ 7 秒かかります。このような小さなデータセットに時間がかかるのはなぜですか。

これを別の方法で書く必要がありますか??

4

2 に答える 2

0

これら2つのデータテーブルにデータが入ってくる場所から.?? データベースからのものである場合は、IQueryable、IEnumerable、または IList を使用してみてください。これらは高速になり、LazyLoading オプションを False に設定します。最初にデータを var または IQueryable または IEnumerable または IList に取得してから、以下のクエリを join に適用します。

IQueryable<string> testList = (from p in dbContext.test
                             join c in dbContext.test1 on p.testId equals c.test1Id
                             select c.test1);

お役に立てば幸いです。:)

于 2013-06-12T06:29:08.323 に答える