我正在开发一个使用sqlite作为数据库的Windows Store应用程序。我正在使用SQLite for Windows Runtime和sqlite-net。尝试从一个表中获取Guid列表,但只在列表中获取到空的guid ({00000000-0000-0000-0000-000000000000})。然而,当查询单个guid时,它按预期工作。
以下是我的代码:
我也尝试过以下格式的查询,但它都不能正常工作:
但是,如果我使用以下查询,仅为了调试目的获取一个guid,则可以正常工作:
在不工作的情况下,列表的数量与表格的行数匹配。有没有人知道为什么列表版本不起作用?
以下是我的代码:
async void SyncSurveys()
{
SQLiteConnection _db = new SQLiteConnection(Path.Combine(ApplicationData.Current.LocalFolder.Path, "SurveyDB"));
var localSurveys = (from s in _db.Table<Survey>()
select s.SurveyGuid).ToList();
...
}
我也尝试过以下格式的查询,但它都不能正常工作:
var localSurveys = _db.Table<Survey>().Select(s => s.SurveyGuid).ToList();
但是,如果我使用以下查询,仅为了调试目的获取一个guid,则可以正常工作:
var localSurvey = db.Table<Survey>().FirstOrDefault().SurveyGuid;
在不工作的情况下,列表的数量与表格的行数匹配。有没有人知道为什么列表版本不起作用?
Parse
方法,例如_db.Table<Survey>().Select(s => Guid.Parse(s.SurveyGuid)).ToList();
。不确定SurveyGuid
的数据类型,它是数据库中的字符串吗?当代码调用new Guid()
而不是Guid.NewGuid()
或Guid.Parse*
时通常会发生这种情况。 - oleksiiSystem.Guid
,使用sqlite-net生成的表格,但是我知道在sqlite数据库中没有叫做数据类型的东西,你的数据类型可以是任何东西,比如ChickenSoup或其他。你的解决方案行不通,因为SurveyGuid是一个Guid,但是Guid.Parse()
需要一个字符串。 - Ferenc Balogh