【问题标题】:sum of item prices that have the same item id具有相同商品 ID 的商品价格总和
【发布时间】:2015-04-20 01:46:15
【问题描述】:

我想要数据库表中具有相同商品 ID 的所有行中的所有商品价格的总和。我的意思是结果应该是一个数字,当我从下拉列表中选择特定项目 id 时,它会自动放在文本框中

如何在 linq 中做到这一点?

public double oIlstGetVouchersDetailjh(int nvoucherID)
{
    Training_sNairoukhEntities1 sNairoukhEntities1 = new Training_sNairoukhEntities1();
    double sum = (from Entity in sNairoukhEntities1.INV_InventoryItems
                                where Entity.ItemID == nvoucherID
                                select Entity.ItemPrice).sum();
    return sum;
}

public double oIlstGetVouchersDetailjh(int nvoucherID)
{
    Training_sNairoukhEntities1 sNairoukhEntities1 = new Training_sNairoukhEntities1();
    double olstInvoicesSrech = from Entity in sNairoukhEntities1.INV_InventoryItems
    group Entity by Entity.ItemID == nvoucherID into g
    select g.sum(Entity => Entity.ItemPrice);

    return olstInvoicesSrech;
}

但是第二个查询给了我这个消息不能隐式地将类型“System.Linq.IQueryable”转换为“double”

【问题讨论】:

  • 上述查询的输出是什么?
  • 我没试过但是我怎样才能把这个结果自动放到gridview的文本框中,查询是否实现了我想要或需要使用group by
  • 为什么要删除代码?
  • 为什么你使用平均值而不是总和?
  • Luna,你为什么要向不同的用户发布相同的问题?在这里,您接受了我对完全相同问题的回答。 stackoverflow.com/questions/29722347/…

标签: c# linq


【解决方案1】:

在您的情况下,这将起作用:

    Training_sNairoukhEntities1 sNairoukhEntities1 = new Training_sNairoukhEntities1();
    double sum = (from Entity in sNairoukhEntities1.INV_InventoryItems
                                where Entity.ItemID == nvoucherID
                                select Entity.ItemPrice).Sum(); // Change sum to Sum
    return sum;

这里有一个更简单的方法:

sNairoukhEntities1.INV_InventoryItems.Where(item => item.ItemID == nvoucherID).Sum(item => item.ItemPrice);

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2020-04-23
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多