我必须根据用户使用字典的输入来计算订单价格,但我似乎做错了。鸡肉条 - 3.50 美元炸薯条 - 2.50 美元汉堡包 - 4.00 美元热狗 - 3.50 美元大杯饮料 - 1.75 美元中杯饮料 - 1.50 美元奶昔 - 2.25 美元沙拉——3.75 美元小饮料 - 1.25 美元例如,如果输入是 236,那么订单的价格应该是 8 美元。将我的 LINQ 查询转换为 double 不起作用(我的查询也肯定是错误的)。我真的不知道任何 LINQ,但由于您不能真正使用 for 循环作为字典,因为它们没有被索引,所以我真的没有任何其他选择。 Dictionary<int, double> items = new Dictionary<int, double>() { { 1, 3.50 }, { 2, 2.50 }, { 3, 4.00 }, { 4, 3.50 }, { 5, 1.75 }, { 6, 1.50 }, { 7, 2.25 }, { 8, 3.75 }, { 9, 1.25 } }; string order = Console.ReadLine(); double sum = 0; for (int i = 0; i < order.Length; i++) { sum += Convert.ToDouble(items.Where(x => x.Key == int.Parse(order[i].ToString())).Select(x => x.Value)); } Console.WriteLine(sum); Console.ReadKey();好吧,输出应该是基于用户输入的正确金额。
4 回答
慕娘9325324
TA贡献1783条经验 获得超5个赞
此实现非常脆弱,它只允许 10 个项目并依赖于字符串解析,但我认为以下代码可以满足您的要求:
order.Sum(character =>
{
int id = character - '0';
return items.TryGetValue(id, out double price) ? price : 0d;
});
TryGetValue检查order仅包含作为项目字典中的键的数字。
白板的微信
TA贡献1883条经验 获得超3个赞
尝试这个
order.Select(c => (c - '0')).Where(c => c > 0 && c < 10).Sum(c => items[c])
- 4 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消
