6

在下面注释掉的行中,PlatypusId 为红色/无法识别,尽管它确实存在于相应的表中。

在对 queryResult、PlatypusId、where 和 count 的多行跨越分配中,红色/无法识别。

    //var queryResult = await conn.Table<PlatypiRequested>().CountAsync().(x => x.PlatypusId.Equals(personId));
    var queryResult = from p in PlatypiRequested
                      where p.PlatypusId.Equals(platypusId)
                      select count;

IOW,当我添加这个时:

    var conn = new SQLiteAsyncConnection(SQLitePath);
    var queryResult = await conn.Table<PlatypiRequested>().CountAsync().(x => x.

...在“x => x”之后没有任何可能性。

查询我的 SQLite 表需要什么样的代码?

我正在使用 SQLite-net 包/扩展,但它的文档(什么文档?)并不过分冗长。纵观 SQLite.cs 和 SQLiteAsync.cs,我一点也不聪明……

更新

好的,Harvey 先生的回答评论让我看到了这个工作代码(Count() 不可用,只有 CountAsync()):

public async Task<bool> PlatypusAlreadyAdded(string platypusId)
{
    var conn = new SQLiteAsyncConnection(SQLitePath);
    var queryResult = await conn.Table<PlatypiRequested>().Where(x => x.PlatypusId == platypusId).CountAsync();
    return queryResult > 0;
}

正如 Jackie DeShannon(与我无关,AFAIK)所唱的那样,“世界现在需要的是“用于 C# Windows Store 应用程序的 SQLite/SQLite-net”一书(或者至少是一篇冗长/内容丰富的博客文章,其中包含所有示例常见的 SQL 语句类型 (CRUD))。

4

1 回答 1

6

我认为您真正要寻找的是

var queryResult = await conn.Table<PeopleRequested>()
                            .Where(x => x.someField == someValue)
                            .CountAsync();  

你的方法行不通,因为最后一个.运算符期待一个方法调用,而不是一个左括号或 lambda 表达式。

于 2012-12-03T23:25:29.157 回答