Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116

    Linq e Stored Procedures e tipi ecc..

    Ho creato un Entity Model nel quale con la funzione chiamaProcedura richiamo una stored procedure (senza passargli parametri) che mi ritorna dei dati presi da due tabelle ed uniti in una tabella omogenea. (che nel mio EntityModel è rappresentata da una entità di tipo ComplexObject, che chiamerò ComplexObject )

    Il codice è più o meno così:


    Dim d = modelloEntita.chiamaProcedura()


    Ora, ho tragicamente scoperto di non riuscire ad ordinare questo elemento "d"
    Ho provato due strade:

    1) Linq:
    Ho provato ad usare linq per interrogare d e farmi ritornare i dati ordinati in questo modo:

    d = From complexObject In d
    OrderBy complexObject.Data 'voglio ordinarli per data
    Select complexObject

    Una normalissima query link.. peccato che mi ritorni il seguente e (per me) indecifrabile errore:
    Unable to cast object of type 'WhereSelectEnumerableIterator' 2(complexObject,complexObject) to type 'System.Linq.IQueryable`(complexObject)
    l'oggetto d è di tipo Data.Object.ObjectResult(Of T) e in rete non ho trovato suggerimenti di nessun tipo per risolvere questa cosa



    2) la seconda soluzione che ho provato è stata chiamare la order by di d inquesto modo:

    d.orderby(...)

    purtroppo anche se sono andato a vedere non ho trovato nulla che potesse aiutarmi, suppongo bisogna usare delle espressioni lambda, ma in realtà sono agli inizi e non saprei bene come funzionano.. copiando un esempio visto in rete ho provato a scrivere

    d.orderBy( complexObject => complexObject.Data)

    senza risultato in quanto presumo che la sintassi non sia affatto così..

    Spero di essere stato chiaro nell'esposizione..

    chi mi sa aiutare?
    grazie,
    Stefano

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Oggi stavo postando lo stesso problema in qualche forum inglese, e ho scoperto che stavo prendendo ad esempio il codice c# mentre in realtà programmavo in VB..

    Quindi facendo:

    Dim query As IEnumerable(Of complexObject) = x.orderBy (Function(complexObject ) complexObject.Data )

    ora funziona =)

    Ma non pago di questa vittoria mi piacerebbe che qualcuno più esperto di me mi spiegasse perchè non posso usare la sintassi del primo esempio per interrogare il risultato di una stored Procedure...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Mi rispondo da solo:

    per usare quella sintassi con un oggetto tornato da una stored procedure (e quindi di tipo Data.Objects.ObjectsResult) basta fare:


    codice:
    Dim d = modelloEntita.chiamaProcedura()
    
    query = From complexObject In d.AsEnumerable <- ecco la parola segreta!
    order By complexObject.Data
    Select complexObject

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.