2012-09-02 10 views
5

के साथ जुड़ें मैं विंडोज -8-मेट्रो-ऐप के लिए डेटाबेस के लिए सी # और SQLite का उपयोग कर रहा हूं। मैं एक जॉइन-कमांड का उपयोग करना चाहता हूं, लेकिन यह नहीं जानता कि दिए गए बैक डेटा को कैसे पढ़ा जाए। यह काम करेगा नहीं:SQLite विंडोज 8 मेट्रो सी # में एसक्लाइट-नेट

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

और यह लागू नहीं है:

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

किसी एक विचार कैसे यह करने के लिए है?

उत्तर

7

में शामिल होने के ठीक है, प्राचीन अगर - आप दोनों व्यक्ति डेटा और नौकरी डेटा लौट रहे हैं - - आप नए वाक्य रचना

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

आपकी समस्या आप क्या लौट रहे हैं में है का उपयोग करना चाहिए ताकि आप एक बनाने की जरूरत वह कक्षा जो डेटा संरचना से मेल खाती है जो आप लौट रहे हैं - या केवल एक व्यक्ति या नौकरी लौटें।

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

दोनों तालिका परिणामों को सूची बॉक्स में आइटम के रूप में कैसे प्रदान करें .. ??? @podiluska –

0

मैं इसे ठीक से उपयोग करने में सक्षम था, आप कोशिश कर सकते हैं।

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

क्या यह पहले स्मृति में सभी डेटा का चयन नहीं करता है? यह एसक्यूएल पक्ष में शामिल नहीं है? –

+0

@IvanZivkovic हाँ, आप सही हैं –

+0

यह सुझाव हटा दिया जाना चाहिए –

संबंधित मुद्दे