2016-04-16 3 views
0

у меня очень странные идеи использовать локальную переменную в моем типе, то трудно сказать, что у меня в уме, так что лучше будет показывать код:Как использовать добавленную стоимость, но не сохраняются

foreach (var item in chosen_products) 
      { 
       var productVM = new ProductViewModel() 
       { 
        ID = item.ID, 
        Name = item.Name, 
        Category = item.Category.Name, 
        Brand = item.Brand.Name, 
        Barcode = item.Barcode, 
        Unit = item.Unit.ToString(), 
        Price_Net = item.Price_Net, 
        Price_Gross = item.Price_Gross, 

        Discount= (item.Price_Customer.FirstOrDefault(x => x.CustomerID == 2) != null) 
            ? (item.Brand.Price_Group.FirstOrDefault(x => x.Group_CustomerID == id_grupy_klienta) != null) ? 
               item.Price_Customer.FirstOrDefault(x => x.CustomerID == 2).Discount + item.Brand.Price_Group.FirstOrDefault(x => x.Group_CustomerID == id_grupy_klienta).Discount : 
               item.Price_Customer.FirstOrDefault(x => x.CustomerID == 2).Discount 
            : (item.Brand.Price_Group.FirstOrDefault(x => x.Group_CustomerID == id_grupy_klienta) != null) ? 
               item.Brand.Price_Group.FirstOrDefault(x => x.Group_CustomerID == id_grupy_klienta).Discount : 0, 
        Price_with_discount_net = .... 

Так как в этой Price_with_discount_net используйте значение скидки, чтобы не повторять код со скидкой. Есть ли такая возможность?

ответ

0

Вы должны использовать больше структуры в коде и переменную поддержки:

Discount d; 

d = item.Price_Customer.FirstOrDefault(x => x.CustomerID == 2); 

if (d != null) 
{ 
    Discount = (item.Brand.Price_Group. //... 

раскатать код, не используйте тройной оператор ?: вообще. Вместо этого используйте конструкцию if(). Вы превзошли его, и теперь вы не видите деревья в лесу: D

Как только у вас есть переменная d, вы можете ее повторно использовать, не используя снова FirstOrDefault().

Смежные вопросы