2014-12-06 59 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);