比较DART中第三个列表中的两个嵌套列表和商店差异

发布于 2025-02-12 21:17:15 字数 498 浏览 2 评论 0原文

我有两个salesorderheader列表(让我们在之前和之后打电话),需要检查salessqty字段是否有差异。如果发现差异,则将其记录在第三个列表中(我们称之为差异)。据说需要比较的项目将处于相同的索引中,但是要谨慎,我希望salesid和itemrecid在计算差异之前匹配两个列表之间。

salesorderhheader.dart

class salesOrderHeader {
  String? salesId = "";
  List<SalesOrderLine>? salesOrderLine;

salesorderline.dart

class salesOrderLine {
  String salesId = "";
  int itemRecId = "";
  String itemId = "";
  String itemName = "";
  double salesQty = 0.0;

I have two lists of salesOrderHeader (lets call them Before and After) and need to check if there is a difference on the salesQty field. If a difference is found it is recorded in a third list (lets call it Differences). Supposedly the items that need to be compared will be in the same index but to be prudent I'd like the salesId and itemRecId to match between the two lists before calculating the differences.

salesOrderhHeader.dart

class salesOrderHeader {
  String? salesId = "";
  List<SalesOrderLine>? salesOrderLine;

salesOrderLine.dart

class salesOrderLine {
  String salesId = "";
  int itemRecId = "";
  String itemId = "";
  String itemName = "";
  double salesQty = 0.0;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

韵柒 2025-02-19 21:17:15

这就是我设法做的,似乎有效,但我想知道是否有更好的答案。

for (var i = 0; i < Before!.length; i++) { 
    for (var j = i; j < Before![i].salesOrderLine!.length; j++) { 
      for (var k = 0; k < After.length; k++) { 
        for (var l = k; l < After[i].salesOrderLine!.length; l++) { 
          if (Before![i].salesOrderLine![j].salesId == After![k].salesOrderLine![l].salesId && Before![i].salesOrderLine![j].itemRecId == After![k].salesOrderLine![l].itemRecId ){
            if (Before![i].salesOrderLine![j].salesQty != After![k].salesOrderLine![l].salesQty){             

              double newQty = Before![i].salesOrderLine![j].salesQty - After![k].salesOrderLine![l].salesQty;

              List<SalesOrderLine> Difference = [];
              Difference.add(new SalesOrderLine(salesId: After![k].salesOrderLine![l].salesId,
                                                    itemRecId: After![k].salesOrderLine![l].itemRecId,
                                                    itemId: After![k].salesOrderLine![l].itemId,
                                                    itemName: After![k].salesOrderLine![l].itemName,
                                                    salesQty: newQty));
              
            }
          }
        }
      }
    }
  }

This is what I managed to do, seems to work but I want to know if there is a better answer.

for (var i = 0; i < Before!.length; i++) { 
    for (var j = i; j < Before![i].salesOrderLine!.length; j++) { 
      for (var k = 0; k < After.length; k++) { 
        for (var l = k; l < After[i].salesOrderLine!.length; l++) { 
          if (Before![i].salesOrderLine![j].salesId == After![k].salesOrderLine![l].salesId && Before![i].salesOrderLine![j].itemRecId == After![k].salesOrderLine![l].itemRecId ){
            if (Before![i].salesOrderLine![j].salesQty != After![k].salesOrderLine![l].salesQty){             

              double newQty = Before![i].salesOrderLine![j].salesQty - After![k].salesOrderLine![l].salesQty;

              List<SalesOrderLine> Difference = [];
              Difference.add(new SalesOrderLine(salesId: After![k].salesOrderLine![l].salesId,
                                                    itemRecId: After![k].salesOrderLine![l].itemRecId,
                                                    itemId: After![k].salesOrderLine![l].itemId,
                                                    itemName: After![k].salesOrderLine![l].itemName,
                                                    salesQty: newQty));
              
            }
          }
        }
      }
    }
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文