3 messaggi dal 10 ottobre 2008
Salve a tutti, il mio problema è il seguente:

ho tre tabelle:
-Utenti
-Organizzazioni
-UtentiOrganizzazioni

La tabella UtentiOrganizzazioni realizza la relazione molti a molti tra le altre due tabelle ed ha un campo booleano "admin" che specifica se un utente è amministratore dell'organizzazione.
Vorrei effettuare trovare il modo per esprimere una query linq to sql che ritorni tutti gli utenti che appartengono alle organizzazioni amministrate da un certo utente.
Non ho la minima idea di come fare, qualcuno mi dà una mano ?
Grazie
426 messaggi dal 17 aprile 2006
mappa le tabelle nel dataclasses
poi la query potrebbe essere tipo:
        using (DataClassesDataContext cm = new DataClassesDataContext())
        {
            List<Utenti> ut = (from u in cm.UtentiOrganizzazioni 
                                   where u.UserId == ID_UTENTE &&
                                   u.admin == true
                                   select u.Utenti).ToList<Utenti>();
        }


cioè parti dalla utentiorganizzazioni dove prelevi le organizzazioni che hanno l'utente ID_UTENTE come amministratore e di li ricavi gli utenti associati

Ciao Alessandro
3 messaggi dal 10 ottobre 2008
Ciao Alessandro e grazie della risposta..
Forse non mi sono spiegato bene: il mio obiettivo non è ricavare tutti gli utenti che sono amministratori ma tutti gli utenti che appartengono alle organizzazioni amministrate da un certo utente.
Per farti capire meglio, la query si può dividere in due passi logici:
- Trovare le organizzazioni amministrate da un certo utente
- Trovare gli utenti appartenenti a tali organizzazioni
Per essere ancora più chiaro, posso dirti che i campi rilevanti delle tabelle sono

Utenti:
-UtenteId

Utentiorganizzazioni:
-UtenteId
-Organizzazione
-admin

Organizzazioni:
-OrganizzazioneId

In sostanza non c'è nessun campo nella tabella Organizzazioni che referenzia la tabella Utenti.

Ciao
Fabrizio
426 messaggi dal 17 aprile 2006
Faber81 ha scritto:
Ciao Alessandro e grazie della risposta..
Forse non mi sono spiegato bene: ...

no no ti eri spiegato bene, sono io che ho toppato il codice al volo senza nemmeno provarlo.

prova con
using (DataClassesDataContext cm = new DataClassesDataContext()) 
{ 
 List<Utenti> ut = 
 ( 
  from u in cm.UtentiOrganizzazioni 
   where u.UtenteId == ID_UTENTE && 
   u.admin == true 
  from un in u.Organizzazione.UtentiOrganizzazioni
   where un.UtenteId != ID_UTENTE && 
   un.admin == false 
   select un.Utenti
  ).ToList<Utenti>(); 
} 

Modificato da taccio il 13 marzo 2009 23.16 -
Modificato da taccio il 13 marzo 2009 23.16 -

Ciao Alessandro
3 messaggi dal 10 ottobre 2008
Ciao,
ho provato ma mi torna un insieme vuoto..eppure la logica mi sembra giusta..
Io uso DataContext invece che DataClassesDataContext, c'è qualche differenza ?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.