1

製品オブジェクトがあります。製品オブジェクトには、DiscountRateプロパティとPriceプロパティがあります。割引率機能に応じて価格を変更したいのですが。すべてのProductオブジェクトに対してこれを実行したいと思います。これが私のコードです:

    public IEnumerable<Product> GetAll()
    {
        //I want to set change price in here. 
        return _kContext.Products.ToList();
    }

何か提案はありますか?

4

1 に答える 1

2

ここでは、List の Foreach メソッドを使用できます。元の製品が変更されることに注意してください。

using System;
using System.Collections.Generic;

_kContext.Products.ToList().ForEach(product => {
    if (product.DiscountRate >= 0.3) {
       product.Price += 10;
    }
});

元のオブジェクトを変更したくない場合は、Linq Select を使用できます。

using System.Linq;
return _kContext.Products.Select(product => {
    var newProduct = new Product();
    newProduct.Price = product.Price;
    newProduct.DiscountRate = product.DiscountRate;
    if (newProduct.DiscountRate >= 0.3) {
       newProduct.Price += 10;
    }
    return newProduct;
});

編集: プロパティ コンストラクターを使用して読みやすくする代替バージョン。

 using System.Linq;
 return _kContext.Products.Select(product => new Product {
        DiscountRate = product.DiscountRate,
        Price = product.Price + ((product.DiscountRate >= 0.3) ? 10 : 0)
 });
于 2012-07-24T09:15:49.990 に答える