Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Coalescence blues
Message
De
14/03/2017 12:00:25
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
Information générale
Forum:
ASP.NET
Catégorie:
Code, syntaxe and commandes
Versions des environnements
Environment:
C# 5.0
OS:
Windows 8.1
Network:
Windows Server 2012 R2
Database:
MS SQL Server
Application:
Desktop
Divers
Thread ID:
01649038
Message ID:
01649041
Vues:
39
>
>        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?

Marc,
Are you sure the line with the error is exactly like:
          decimal emWeight = context.EMTransactions.Where(r => (r.TransactionHeaders_Id == transactionHeaders_Id)).Sum(r => r.Weight) ?? 0;
If yes, then you don't need the ?? at all ( actually what it is trying to say is since neither an int nor a decimal is a nullable type you can't apply ?? there). In your code I see a (decimal) casting which is an attempt to cast to decimal and that should really be a (decimal?).
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform