亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#如何根據其鍵將字典的值添加到變量中?

C#如何根據其鍵將字典的值添加到變量中?

C#
斯蒂芬大帝 2022-11-13 14:30:01
我必須根據用戶使用字典的輸入來計算訂單價格,但我似乎做錯了。雞肉條 - 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 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

不需要循環。

var sum = order.Sum(c => items[int.Parse(c.ToString())]);


查看完整回答
反對 回復 2022-11-13
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

此實現非常脆弱,它只允許 10 個項目并依賴于字符串解析,但我認為以下代碼可以滿足您的要求:


order.Sum(character =>

{

    int id = character - '0';


    return items.TryGetValue(id, out double price) ? price : 0d;

});

TryGetValue檢查order僅包含作為項目字典中的鍵的數字。


查看完整回答
反對 回復 2022-11-13
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

嘗試這個

order.Select(c => (c - '0')).Where(c => c > 0 && c < 10).Sum(c => items[c])


查看完整回答
反對 回復 2022-11-13
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

您可以sum += items[order[i]-'0'];在 for 循環中使用。

這是有效的,因為 '0' 與值 48 一起存儲(請參閱此問題的答案)。其余的數字按順序存儲('1' 是 49,'2' 是 50,等等),所以 '1' - '0' == 1 等等。


查看完整回答
反對 回復 2022-11-13
  • 4 回答
  • 0 關注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號