1

仲間の開発者が書いたコードをデバッグしようとしていますが、LINQ 式がタスクを難しくしています。複雑な LINQ 式をデバッグする方法がわからないので、それらを除いた同等のコードを誰か教えてもらえますか?

instanceIdList.AddRange(
  strname.Instances
    .Where(z => instancehealthList.Find(y => y.InstanceId == z.InstanceId 
                                          && y.State == "InService") != null)
    .Select(x => x.InstanceId)
    .ToList()
  .Select(instanceid => new ServerObj(servertype, instanceid))
);

また、これはよく書かれていますか?一般的に、この種の LINQ は奨励されていますか、それとも眉をひそめていますか?

4

2 に答える 2

2

一連のループに書き直すのではなく、次のようforeachに、各操作の後に式を熱心に実行して、中間ステップでデータセットを検査できるようにすることができます。

List<var> soFar = strname.Instances.Where(z => instancehealthList.Find(y => y.InstanceId == z.InstanceId && y.State == "InService") != null).ToList();

List<Int64> soFar2 = soFar.Select( x => x.InstanceId ).ToList();

List<ServerObj> soFar3 = soFar2.Select( instanceId => new ServerObj(servertype, instanceid) ).ToList();

instanceIdList.AddRange( soFar3 );

もちろん、この Linq はよく書かれていないと思います。

于 2013-09-27T20:17:22.427 に答える