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

si2030Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Hawkvalley1Commented:
Have you tried:

textbox1.Text = clientBalance.ToString
0
Mohed SharfiVice CEOCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.