以前的值使用TakeWhile

时间:2016-07-05 16:56:01

标签: c# linq

我正在使用linq基于某些条件加入两个表,我有汇总表和用户表,在汇总表中我有两列,一个是isPaid(位)另一个是金额(十进制)。我需要检查isPaid列,以便在当前值amount列中添加先前的value amount列。如果isPaid为false,我需要将之前的金额列添加到当前金额列中,否则无需添加。  我试过这个查询

 var billData = (from summary in billingSummary
                 join userData in user on summary.parentId equals userData.ParentId
                select new MonthlyBilling
                {
                  billAmount = summary.billamount.ToString(),
                  paymentAmount = billingSummary.TakeWhile(x => (x.ispaid == false) ? (x.billamount + summary.billamount) : summary.billamount).ToString(),
       }).ToList();

但是我在TakeWhile部分收到了一个名为CAN NOT IMPLICITLY CONVERT TYPE DECIMAL TO BOOL的错误。我知道错误的含义是什么,但我收到此错误的地方?任何想法?

1 个答案:

答案 0 :(得分:0)

你的TakeWhile期待从表达式中获得一个波音:

x => (x.ispaid == false) ? (x.billamount + summary.billamount) : summary.billamount

该语句返回一个十进制值,这就是你得到错误的原因。