使用十进制计算IEnumerable <decimal>而不使用for-loop

时间:2016-11-10 07:44:20

标签: c# .net linq

我得到一个小数的折扣百分比,我有IEnumerable<decimal>作为价格列表。我想计算linq中每个的折扣价。

IEnumerable<decimal> prices = new IEnumerable<decimal>() { 100, 200, 300};
decimal discountPercentage = 20;

拍我一些想法,我很想尝试任何事情。

6 个答案:

答案 0 :(得分:3)

希望这有帮助

IEnumerable<decimal> prices = new List<decimal>() { 100, 200, 300};
decimal discountPercentage = 20;
var discounted = prices.Select(x=>x-x/100*discountPercentage).ToList();

答案 1 :(得分:3)

如果这是折扣价格,您必须从您的价格中减去折扣。

因此MasterVolume的{​​{1}}折扣会产生20%的折扣价。

100

答案 2 :(得分:1)

您无法初始化IEnumerable。请改用List

new List<decimal> { 100, 200, 300 }.
    Select(value => value * (100 - discountPercentage) / 100);

答案 3 :(得分:0)

var discountPercentage = 20;

var discounted = prices.Select(p => p -= p * (discountPercentage / 100)).ToArray();

答案 4 :(得分:0)

使用选择和列出结果。

prices.Select(value => value - value * discountPercentage /100).ToList();

答案 5 :(得分:0)

请注意,您无法实例化IEnumerable,因为它是一个接口,而不是具体的类。因此,请使用List并为其添加值。

建议的答案,

IEnumerable<decimal> prices = new List<decimal>() { 100, 200, 300 };
decimal discountPercentage = 20;

// calculate prices after applying the discount via LINQ
prices = prices.Select(p => (100 - discountPercentage) / 100 * p);  

// displaying for testing purposes     
foreach (decimal price in prices)
{
    Console.WriteLine(price);
}

这将显示计算出的折扣价格,如下所示

80.0 160.0 240.0