0

我想在 SOLine 中查找项目。我应该使用

PXSelectBase<SOLine> lines = new PXSelect<SOLine, Where<SOLine.orderNbr,Equal<Required<SOLine.orderNbr>>>>(graph);

foreach (SOLine item in lines.Select(order.OrderNbr)) {}

或者

List<SOLine> lines  = PXSelect<SOLine, Where<SOLine.orderNbr, Equal<Required<SOLine.orderNbr>>>>.Select(graph, order.OrderNbr).FirstTableItems.ToList();

foreach (SOLine item in lines) {}

我不知道哪个更好。对不起我的英语不好。

4

2 回答 2

2

我更喜欢第一个样本,但主要是出于审美原因:

  1. 它看起来更容易阅读和理解(第 1 行有一个查询,接下来它使用特殊参数在数据库上执行)
  2. 这段代码没有分配我们以后不再需要的 List< SOLine> 实例,它也不会分配内存来保留所有行,因此只要求 CLR 与单行占用的内存一样多。
于 2015-03-22T10:08:22.537 回答
1

您的示例中显示的两种方法之间没有任何重要区别,除了一个FirstTableItems让您执行几个额外步骤的方法 - 至少调用此属性本身。

我建议将第一种方法与 pure 一起使用,Select(..)因为它更简洁并且做同样的事情。FirstTableItems只会将结果集的项目转换为第一个项目的类型,并为您提供类型化的可枚举(IEnumerable<SOLine>在您的情况下),但是因为您foreach可以隐式地完成项目转换 - 就像在您的第一个示例中一样。因此,最好使用更简单的选项。

于 2015-03-22T00:02:57.283 回答