2014-12-06 40 views
0

我有了這個SQLite的代碼來嘗試檢索記錄:如何從SQLite查詢返回一個類實例?

String qry = String.Format("SELECT ChallengeTypeFK, {0}, {1} FROM LettersWordPhrases WHERE Id = ?", keyLang, candidateAnswersLang); 
List<DBModels.LettersWordsPhrases> lwp = dbConn.Query<DBModels.LettersWordsPhrases>(qry, randomId); 

我寧願只指定查詢的結果爲單個DBModels.LettersWordsPhrases,但它說這是不可能的,它需要列表<>。爲什麼當我只想要返回一條記錄時,這是必要的?

我怎樣才能得到它只返回一條記錄,而不是必須從結果集中提取第一個(也是唯一的)元素?

+1

您可以加入更多的信息一樣,什麼類型是dbConn? – Patrick 2014-12-06 17:21:27

+0

你使用的是什麼ORM? – dasblinkenlight 2014-12-06 17:21:51

+1

@dasblinkenlight它似乎是Dapper,但後來我想知道如果代碼編譯。 – Steve 2014-12-06 17:29:19

回答

2

您可以使用Enumerable.FirstOrDefault()

String qry = String.Format("SELECT ChallengeTypeFK, {0}, {1} FROM LettersWordPhrases WHERE Id = ?", keyLang, candidateAnswersLang); 
DBModels.LettersWordsPhrases lwp = dbConn.Query<DBModels.LettersWordsPhrases>(qry, randomId).FirstOrDefault(); 

注意檢查LWP爲空,如果不返回任何記錄。

2

假設這是SQLite-net,你也可以用FindWithQuery做你在找什麼:

String qry = String.Format("SELECT ChallengeTypeFK, {0}, {1} FROM LettersWordPhrases WHERE Id = ?", keyLang, candidateAnswersLang); 
DBModels.LettersWordsPhrases lwp = dbConn.FindWithQuery<DBModels.LettersWordsPhrases>(qry, randomId);