The ?? operator can only work with nullable types. int and decimal are not nullable, but decimal? is.
+++ Rick ---
>
> public static decimal ComputeWeightDifference(int transactionHeaders_Id,PICSEntities context)
> {
> decimal emWeight = (decimal) context.EMTransactions.Where(r => (r.TransactionHeaders_Id == transactionHeaders_Id)).Sum(r => r.Weight) ?? 0;
> decimal? detailsWeight = 0;
> emWeight = (decimal?) context.EMTransactions.Where(r => (r.TransactionHeaders_Id == transactionHeaders_Id)).Sum(r => r.Weight) ?? 0;
> detailsWeight = context.TransactionDetails.Where(r => (r.TransactionHeaders_Id == transactionHeaders_Id)).Sum(r => r.Weight);
> return (decimal)(emWeight - (decimal) (detailsWeight ?? 0);
> }
>
>I'm really puzzled by this statement:
>
> decimal emWeight = context.EMTransactions.Where(r => (r.TransactionHeaders_Id == transactionHeaders_Id)).Sum(r => r.Weight) ?? 0;
>
>
>It won't compile. CS0019 Operator '??' cannot be applied to operands of type 'decimal' and 'int'
>
>But this does :
>
>
>return emWeight - (decimal) (detailsWeight ?? 0);
>
>
>So is there a way to do is in one line, or do I first need to extract the transactions and check if there are none?