Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    residenza
    Turin, Italy
    Messaggi
    157

    [LINQ] Nome campo passato come parametro

    Ciao,
    non so se c'è da qualche parte la spiegazione a quanto sto per chiedere, ma non saprei cosa cercare, quindi provo a spiegarmi con un esempio.

    Ho una tabella "tblContract" con dei campi tipo:
    ID, contratto, data, Utente1, Utente2, ...., Utente70

    Devo popolare la tabella con un array "Valore(70)". Prima facevo così:

    objRow("contratto") = "aaa"
    objRow("data") = "01/01/01"
    For i = 1 to 70
    objRow("Utente" & i) = Valore(i)
    Next

    Adesso provo

    dim NewItem as New Namespace.tblContract
    NewItem.contratto = "aaa"
    NewItem.data="01/01/01"

    ??? Come faccio a scorrere tutti i campi senza scriverli uno ad uno ???

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Con datatable & co. il problema ti veniva risolto "dietro le quinte" con reflection; linq to sql (o ef visto che non lo hai specificato, ma non cambia nulla) offre un accesso tipizzato ai dati e ti ha semplicemente fatto venire a galla il design poco ortodosso del tuo db. E' quello il vero problema.
    dovresti avere una relazione uno a molti tra contratti e utenti in due tabelle distinte, a quel punto dopo averle mappate, usando linq le puoi scorrere con un semplice foreach.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    residenza
    Turin, Italy
    Messaggi
    157
    In realtà il db è complesso e ho semplificato scrivendo Utente1, 2 etc, ma sono campi distinti che non possono essere risolti con una relazione uno a molti. Puoi sonsiderarli come Campo1, Campo2, ...
    Il punto è che ho più di 70 campi da riempire e avevo ottimizzato il processo mettendo i valori in un'array e usando nomi di campi sequenziali. Questo si ripete su più tabelle e quindi avevo fatto una sub automatica.
    Inoltre ho decine di migliaia di righe da gestire già in questo modo; non posso aumentare il valore di due ordini di grandezza.

    Per cui avrei proprio bisogno di un modo per scorrere i campi in modo automatico

    Comunque grazie del suggerimento


    PS: non l'ho specificato perchè il problema rimane, ma uso un Entity Data Model

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Con datatable & co. il problema ti veniva risolto "dietro le quinte" con reflection;
    Non è vero. ero ubriaco (anzi affamato). cmq il succo è quello: passi una stringa che indica il campo all'api e quindi puoi giocare con le stringhe mentre in Entityframework no.
    No non c'è un modo (almeno non senza ricorrere a metodi brutti e complicati ma tanto vale ritornare a dataset e datatable) per fare quello che cerchi.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    residenza
    Turin, Italy
    Messaggi
    157
    Linq ha dei vantaggi, come tutto .NET, ma devo dire che in asp mi ero creata una serie di automatismi, per cui praticamente potevo aggiungere campi e intere tabelle in 10 minuti, comprese maschere di modifica custom e report. Qui me lo sogno.

    Pazienza. Faremo come vuole Micorsoft

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 © 2025 vBulletin Solutions, Inc. All rights reserved.