Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 352
  • Last Modified:

Casting Difficulties

Hi Experts,

I have a LINQ expression that produces a single decimal number - 4201.00D.

The problem is, I cannot get this to be accepted into the textbox I have.

While the LINQ statement looks a little complicated (see below) it works and it delivers the number above. I cannot get my textbox to accept this number.

The error  I get is:

Conversion from type 'DataQuery(Of Decimal)' to type 'String' is not valid.

I have tried Ctype and trycast (trycast just gave me nothing).

So, my question is, how to you cast succesfully to allow a textbox to accept your LINQ statement result.

Kind Regards

Simon
Dim clientBalance = (From ledger In db.ledgers _
                                    Where (ledger.acc_id = "2" And ledger.tran_type = "CI" And ledger.payment_complete = False And ledger.client_no = clientNo) Or _
                                   (ledger.acc_id = "2" And ledger.tran_type = "PMT" And ledger.payment_complete = False And ledger.client_no = clientNo) _
                                    Select _
                                    balance = -1 * (From ledg2 In db.ledgers Where (ledg2.tran_type = "CI" And ledg2.acc_id = "2" And ledg2.payment_complete = False And ledg2.client_no = ledger.client_no) Select ledg2.amount).Sum - _
                                                    If((From ledg3 In db.ledgers Join ledg4 In db.ledgers On ledg3.posting_id Equals ledg4.link_posting_id Where _
                                                    (ledg3.acc_id = "2" And ledg3.payment_complete = False And ledg3.client_no = ledger.client_no) Select ledg4.amount).Count > 0, _
                                                    (From ledg3 In db.ledgers Join ledg4 In db.ledgers On ledg3.posting_id Equals ledg4.link_posting_id Where _
                                                    (ledg3.acc_id = "2" And ledg3.payment_complete = False And ledg3.client_no = ledger.client_no) Select ledg4.amount).Sum, _
                                                    (From ledg3 In db.ledgers Join ledg4 In db.ledgers On ledg3.posting_id Equals ledg4.link_posting_id Where _
                                                    (ledg3.acc_id = "2" And ledg3.payment_complete = False And ledg3.client_no = ledger.client_no) Select ledg4.amount).Count)).Distinct

Open in new window

0
si2030
Asked:
si2030
3 Solutions
 
Hawkvalley1Commented:
Have you tried:

textbox1.Text = clientBalance.ToString
0
 
Mohed SharfiCommented:
Hi si2030,
please try this code to cast decimal to string
thanks
decimal Mydecimal = 4201.00D;
string Mystr;
Object MyObject;
MyObject = Mystr; // put  into object
Mydecimal = ()MyObject; // two-step cast works
Mystr = (string) Mydecimal;
Mystr = (string)MyObject; // throws exception

Open in new window

0
 
si2030Author Commented:
I have worked this out. It was a LINQ issue in that while I did use distinct it still treated the result as an array.. as per (0)4201.00D. By adding ".single" to the end of ".distinct" the result was transformed into a single item.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now