2012-09-02 10 views
5

Sto usando C# e SQLite per un database per Windows-8-Metro-App. Voglio usare un comando Join, ma non so come leggere i dati restituiti. Questo non funziona:SQLite Partecipa a Windows 8 Metro C# con sqlite-net

db.Query<Person>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID"); 

E questo non è implementata:

db.Query<Person, Job>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID"); 

Qualcuno ha un'idea di come fare questo?

risposta

7

Il join è bene, se antiquato - è necessario utilizzare la nuova sintassi

SELECT * FROM Person INNER JOIN Job ON Person.JobID = Job.ID 

Il tuo problema è in ciò che si sta tornando - si restituisce sia dei dati di sicurezza e dei dati di lavoro - quindi è necessario creare un classe che corrisponde alla struttura dati che si sta restituendo - o restituire solo una persona o un lavoro.

db.Query<Person>("SELECT Person.* FROM Person INNER JOIN Job ON Person.JobID = Job.ID");   
db.Query<Job>("SELECT Job.* FROM Person INNER JOIN Job ON Person.JobID = Job.ID"); 
+0

come fornire entrambi i risultati della tabella come ELEMENTO alla casella di riepilogo .. ??? @podiluska –

0

Sono stato in grado di usarlo correttamente, puoi provare.

var db = new SQLiteAsyncConnection(_dbPath); 
var query = from person in await db.Table<Person>().ToListAsync() 
        join job in await db.Table<Job>().ToListAsync() 
        on person.JobID = job.ID 
        select new 
        { 
         Name=person.Name 
        }; 
+0

Questo non seleziona prima tutti i dati nella memoria? Non si unisce al lato SQL? –

+0

@IvanZivkovic sì, hai ragione –

+0

Questo suggerimento dovrebbe essere cancellato –

Problemi correlati