我有一个包含产品名称及对应的价格为Dictionary对象是这样的:是使用字典正确存储产品信息和应用的计算
var products = new List<Dictionary<string, decimal>>()
{
new Dictionary<string, decimal> {{"product1", 10}},
new Dictionary<string, decimal> {{"product2", 20}},
new Dictionary<string, decimal> {{"product3", 30}}
};
我再通过这个循环和应用单位产品计算一下:
foreach (var product in products)
{
foreach (KeyValuePair<string, decimal> kvp in product)
{
var result = GetRatePerProduct(kvp.Key) * kvp.Value;
}
}
GetRatePerProduct只需要产品名并返回一个十进制数。
基于这种循环的计算结果将被插入到订单表包含每个产品列,产品1,产品2,产品3 ...
所以在循环后的表应该是这样的:
Product1 Product2 Product3 ...
12 24 36
我想到了创建另一个解释是这样的:
var results = new List<Dictionary<string, decimal>>();
和内部填充它的循环,然后循环使用超出这个字典将数据插入到SQL数据库中。 我已经缩短了这个例子中的产品数量,但是我们将有52个产品,这个数字永远不会改变。
这种方法是否正确?有没有更好的方法来做到这一点,可能使用Linq?你可以指出我在正确的方向与Linq这样做吗?
感谢
谢谢,计算必须在C#中完成,在SQL上执行它不幸不是一个选项(业务原因)。我实际上想知道如何用Linq做到这一点,但不确定,因为我的Linq知识暂时还不够。 – 03Usr 2013-02-23 15:35:06
好吧,我看的越多,我不得不问:为什么你有一个字典列表,其中每个字典只有一个键值对? – 2013-02-23 15:53:45
你说得很对,有多个键值对的单个字典会更好。无需将字典放入列表中。谢谢。 – 03Usr 2013-02-23 16:04:08