我必須根據用戶使用字典的輸入來計算訂單價格,但我似乎做錯了。雞肉條 - 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條經驗 獲得超4個贊
此實現非常脆弱,它只允許 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 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消