2012-09-02 23 views
5

Estoy usando C# y SQLite para una base de datos para una aplicación Windows-8-Metro. Quiero utilizar un Comando de unión, pero no sé cómo leer los datos devueltos. Esto no funcionará:SQLite Únete en Windows 8 Metro C# con sqlite-net

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

Y esto no está implementado:

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

Alguien tiene una idea de cómo hacer esto?

Respuesta

7

La unión es muy bien, aunque anticuado - se debe utilizar la nueva sintaxis

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

Su problema está en lo que va a devolver - va a devolver tanto los datos de la persona y los datos de empleo - por lo que necesita para crear una clase que coincida con la estructura de datos que está devolviendo, o devuelva solo una persona o un trabajo.

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

cómo proporcionar los dos resultados de la tabla como un elemento a listbox .. ??? @podiluska –

0

Pude usarlo correctamente, puede intentarlo.

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

¿Esto primero no selecciona todos los datos en la memoria? No se une en el lado de SQL? –

+0

@IvanZivkovic sí, tienes razón –

+0

Esta sugerencia debe eliminarse –

Cuestiones relacionadas