Информация об изменениях

Сообщение Linq, избежать двойного обращения от 30.01.2025 16:42

Изменено 30.01.2025 18:46 snaphold

Linq, избежать двойного обращения
Есть большой список List<B>
Есть класс А и есть 2 свойства среди прочих 15

int? Qty
string DeliveryResult


эти 2 свойства высчитываются из
Dictionary DeliveryList((id, personId), int qty)


в зависимости от результата поиска в словаре по ключу может быть 3 значения для DeliveryResult.

как можно заменить такое
var res = list<B>.Select(a => new A
         { Qty = DeliveryList[],
           DeliveryResult = GetDeliveryResult (key, DeliveryList[]),
          ...другие свойства
         }


на одно обращение к DeliveryList типа

var res = list<B>.Select(a => new A 
         { 
             var d = GetDelivery(key)        
           Qty = d.qty,
           DeliveryResult = d.DeliveryResult ,
          ...другие свойства
         }
Linq, избежать двойного обращения
Есть большой список List<B>
Есть класс А и есть 2 свойства среди прочих 15

int? Qty
string DeliveryResult


эти 2 свойства высчитываются из
Dictionary DeliveryList((id, personId), int qty)


в зависимости от результата поиска в словаре по ключу может быть 3 значения для DeliveryResult.

как можно заменить такое
var res = list<B>.Select(a => new A
         { Qty = DeliveryList[],
           DeliveryResult = GetDeliveryResult (key, DeliveryList[]),
          ...другие свойства
         }


на одно обращение к DeliveryList типа

var res = list<B>.Select(a => new A 
         { 
             var d = GetDelivery(key)        
           Qty = d.qty,
           DeliveryResult = d.DeliveryResult ,
          ...другие свойства
         }


Зы. Принципиально не делать автовычисляемое поле для DeliveryResult. Всю логику не стал постить, поэтому хочу понять как одно обращение к справочнику сделать