我正在使用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的错误。我知道错误的含义是什么,但我收到此错误的地方?任何想法?
答案 0 :(得分:0)
你的TakeWhile期待从表达式中获得一个波音:
x => (x.ispaid == false) ? (x.billamount + summary.billamount) : summary.billamount
该语句返回一个十进制值,这就是你得到错误的原因。