【发布时间】:2017-06-22 07:07:46
【问题描述】:
我有以下 linq 查询块来计算报告的一些值。
var items = (from trans in calclabordb.Sales_Transactions
select trans).SelectMany(st => st.Sales_TransactionLineItems).Where(stli => stli.TypeID == typeID);
decimal test = items.Where(stli => stli.Inventory_Item is Base).Sum(stli => (decimal?)stli.Inventory_Item.IntExtraServiceAmount) ?? 0;
decimal test2 = items.Where(stli => stli.Inventory_Item is Extra).Sum(stli => (decimal?)stli.ItemPrice) ?? 0;
decimal test3 = test + test2;
current.ExtraSales = items.Where(stli => stli.Inventory_Item is Base).Sum(stli => (decimal?)stli.Inventory_Item.IntExtraServiceAmount) ?? 0 +
items.Where(stli => stli.Inventory_Item is Extra).Sum(stli => (decimal?)stli.ItemPrice) ?? 0;
我在调试器中单步执行了代码,发现了一些奇怪的地方。分配到test 后,其值为0。分配到test2 test2 == 0 和test == 11.31 后分配到test3 test == 11.31 test2 == 11.28 和test3 == 22.59 后分配到ExtraSales ExtraSales == 11.31。当这一切都完成时,ExtraSales 中的值应该是 22.59。这是怎么回事?
编辑:我在分配到ExtraSales 之后添加了额外的行,但值没有改变。
【问题讨论】:
标签: c# linq linq-to-sql