Acumatica 2020R1 - FirstOrDefault выбирает другую строку - PullRequest
0 голосов
/ 06 апреля 2020

Я использовал FirstOrDefault за тонну в своем коде (это привычка, я много раз использовал linq2 sql) и использую его в Acumatica. Для поддержки разработки его следует использовать, только если вы ожидаете одного результата.

У меня есть некоторый код в SOOrderEntry, который получает элемент в текущей строке, нажав кнопку и проверив несколько вещей. Это в моем расширении графика.

Этот код работал до обновления:

SOLine Line = Base.Transactions.Current;
InventoryItem Item = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID.IsEqual<@P.AsInt>>.View.Select(Base, Line.InventoryID).FirstOrDefault();                
InventoryItemExt ItemExt = Item.GetExtension<InventoryItemExt>();

Результат не такой, как ожидалось. Line.InventoryID возвращает 10045, что является правильным элементом. Item.InventoryID составляет 10046

1 Ответ

0 голосов
/ 06 апреля 2020

После отладки я обнаружил, что новым аргументом, который можно легко использовать, является новое свойство TopFirst. Это возвращает первый результат.

Следующий код работает как ожидалось (и как он работал в 2019 R2 и раньше!).

SOLine Line = Base.Transactions.Current;
InventoryItem Item = SelectFrom<InventoryItem>.Where<InventoryItem.inventoryID.IsEqual<@P.AsInt>>.View.Select(Base, Line.InventoryID).TopFirst;                
InventoryItemExt ItemExt = Item.GetExtension<InventoryItemExt>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...