gpt4 book ai didi

c# - 使用 LINQ 计算特定列的总和

转载 作者:行者123 更新时间:2023-11-30 17:07:28 25 4
gpt4 key购买 nike

使用下面提到的查询,我得到了名为促销值(value) 。我想得到 *matched *

的所有值的总和
var matched = from table1 in dvtempPropertyRoomRatePromotion.ToTable().AsEnumerable()
join table2 in dvPropertyRooms.ToTable().AsEnumerable() on
table1.Field<DateTime>("RateDate") equals table2.Field<DateTime>("RateDate")
where table1.Field<DateTime>("RateDate") == table2.Field<DateTime>("RateDate")
select table1.Field<string>("promotionValue");

最佳答案

您需要parse intdecimal 的字符串:

var matched = from r1 in dvtempPropertyRoomRatePromotion.ToTable().AsEnumerable()
join r2 in dvPropertyRooms.ToTable().AsEnumerable()
on r1.Field<DateTime>("RateDate").Date equals r2.Field<DateTime>("RateDate").Date
select decimal.Parse(r1.Field<string>("promotionValue"));
decimal sum = matched.Sum();

请注意,我还更改了一些其他内容,例如多余的 where(因为您已经加入了这些表)或 DateTime 的 Date 属性

除此之外

  1. 您为什么需要 DataViewToTable始终创建一个新的 DataTable。为什么不对所有人使用 Linq-To-DataSet?我假设您已使用 DataView 进行过滤,请改用 Enumerable.Where。这将更一致、更高效且更具可读性。
  2. 为什么 promotionValue 列是一个字符串?您应该将其存储为数字类型。

关于c# - 使用 LINQ 计算特定列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14499976/

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