gpt4 book ai didi

c# - 如何改进我的 LINQ

转载 作者:太空狗 更新时间:2023-10-29 22:26:32 27 4
gpt4 key购买 nike

以下查询确实解决了我的问题,但它似乎过于复杂。

问题是我有一个存储菜单选项(id、名称、描述和价格)的表。我还有一个 session 变量,用于将用户选择存储在字典中(存储 ID 和数量)。

我在下面生成的 LINQ 基本上计算所有内容的总和值。它将表格转换为字典,然后将价格乘以数量相加。

有更好的方法吗?

var prices = _db.MenuOptions
.Select(o => new { o.Id, o.Price })
.ToDictionary(o => o.Id, o => o.Price);
Session["price"] = prices
.Where(p => orderItems.Keys.Contains((int)p.Key))
.Sum(p => p.Value * orderItems[p.Key]);

最佳答案

select 部分是不必要的,可以删除:

var prices = _db.MenuOptions.ToDictionary(o => o.Id, o => o.Price);

price 计算可以从 orderItems 开始:

Session["price"] = orderItems.Sum(oi => oi.Value * prices[oi.Key]);

(假设所有 orderItems 在数据库中都有价格。)

编辑:从 Arcturus 的回答来看,类似这样的事情对于“单线”来说也是可能的,但可能更慢(见评论):

Session["price"] = orderItems.Sum(oi => oi.Value * _db.MenuOptions.Single(o => o.ID == oi.Key).Price);

关于c# - 如何改进我的 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com